고유한 회전을 모두 보유하는 문자열에 대한 회전 그룹이 있다고 가정합니다. 입력이 "567"과 같으면 "675"와 "756"으로 회전할 수 있으며 모두 동일한 회전 그룹에 있습니다. 이제 문자열 단어 목록이 있는 경우 각 단어를 회전 그룹별로 그룹화하고 총 그룹 수를 찾아야 합니다.
따라서 입력이 단어 =["xyz", "ab", "ba", "c", "yzx"]와 같으면 출력은 3이 됩니다. 세 개의 회전 그룹 - ["xyz", "yzx"], ["ab", "ba"], ["c"].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s:=새로운 세트
- ct:=0
- 단어의 각 i에 대해 수행
- 내가 s에 없으면
- ct :=ct + 1
- 0 범위에서 i 크기까지의 j에 대해
- temp :=i의 부분 문자열[인덱스 j에서 끝까지] i의 부분 문자열 연결 [처음부터 j까지])
- s에 온도 삽입
- 내가 s에 없으면
- ct를 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class 솔루션:def solve(self, words):s=set() ct=0 for i in words:if i not in s:ct+=1 for j in range(len(i)):s.add (i[j:]+i[:j]) return ctob =Solution()print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))사전>입력
["xyz", "ab", "ba", "c", "yzx"]출력
3