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

Python에서 단어 목록에 대해 몇 개의 개별 회전 그룹이 있는지 찾는 프로그램

<시간/>

고유한 회전을 모두 보유하는 문자열에 대한 회전 그룹이 있다고 가정합니다. 입력이 "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에 온도 삽입
  • 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