Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 문자열 회전

<시간/>

두 개의 문자열 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씩 증가
  • j =B의 길이이면 true를 반환합니다.
  • j가 0이 아니면 i를 1만큼 감소
  • j :=0
  • 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