두 개의 문자열 s와 t가 있다고 가정합니다. 좌우 어느 방향으로든 2개 회전시켜 얻을 수 있는지 확인해야 합니다.
따라서 입력이 s ="kolkata" t ="takolka"와 같으면 "takolka"를 왼쪽으로 두 번 회전하여 "kolkata"를 얻을 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s의 크기가 t의 크기와 같지 않으면
- 거짓을 반환
- right_rot :=빈 문자열
- left_rot :=빈 문자열
- l :=t의 크기
- left_rot :=left_rot 연결 t[인덱스 l - 2에서 끝까지] 연결 t[인덱스 0에서 l - 3]
- right_rot :=right_rot 연결 t[인덱스 2에서 끝까지] t 연결[인덱스 0에서 1]
- s가 right_rot과 같거나 s가 left_rot과 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(s, t): if (len(s) != len(t)): return False right_rot = "" left_rot = "" l = len(t) left_rot = (left_rot + t[l - 2:] + t[0: l - 2]) right_rot = right_rot + t[2:] + t[0:2] return (s == right_rot or s == left_rot) s = "kolkata" t = "takolka" print(solve(s, t))
입력
"kolkata", "takolka"
출력
True