CodeWars 일백 열 아홉 번째 문제
Updated:
Calculate String Rotation
static int shiftedDiff(String first, String second) {
int maxRatation = first.length();
for(int i = 0; i < maxRatation; i++) {
if(second.equals(first)) {
return i;
}
first = first.substring(maxRatation - 1) + first.substring(0, maxRatation - 1);
}
return -1;
}
- 문제는 쉬운 문제였다.
- 그러나 조금만 간단히 생각해보면 Best 코드처럼 쉽게 풀 수 있는 문제이다.
- rotation해서 나올 문자를 이어 붙이면 그 안에 원래 문제가 있을 것이다.
- 거기의 위치를 뽑아내면 그것이 rotation한 횟수이다.
- 예를 들어서 coffee를 rotation해서 eecoff를 만드는 횟수를 만들고 싶다.
- 그러면 eecoff + eecoff 이렇게 붙인다.
- 그러면 ee(coffee)coff 문자열 사이에 괄호에 보이듯이 coffee가 보인다. 이때 coffee는 두 번째로 시작하기 때문에 2번 rotation 했다.
static int shiftedDiff(String first, String second){
if (first.length() != second.length())
return -1;
return (second + second).indexOf(first);
}