두 개의 문자열 A와 B가 있다고 가정합니다. 문자열 A를 회전하고 회전 위치에서 B와 일치하는지 확인하고 일치하는 경우 true를 반환하고 그렇지 않으면 false를 반환합니다. 예를 들어 A ='abcde', B ='bcdea'인 경우 A를 회전한 후 B로 변환할 수 있으므로 답은 true가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- A와 B가 모두 비어 있으면 true를 반환하고, 길이가 다른 경우에는 false를 반환합니다.
- A :=A 다음에 A 연결
- i :=0 및 j :=0
- 동안 i 의 길이
- A의 길이 – i + 1
- 동안 i
- i와 j를 1씩 증가
- A의 길이 – i + 1
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def rotateString(self, A, B): if not A and not B: return True if len(A) != len(B): return False A = A*2 i = 0 j=0 #print(A,B) while i < len(A): if len(A)-i+1<len(B): return False while i<len(A) and j < len(B) and A[i] == B[j]: #print("Here!",i,j) i+=1 j+=1 if j == len(B): return True if j: i-=1 j=0 i+=1 ob1 = Solution() print(ob1.rotateString("abcde", "cdeab"))
입력
"abcde" "cdeab"
출력
True