두 개의 문자열 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