문자열이 있다고 가정하고 반복 문자열인지 여부를 확인해야 합니다.
따라서 입력이 string ="helloworldhelloworld"와 같으면 출력은 True
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=s의 크기
- findFactors() 함수를 정의합니다. n 소요됩니다.
- f :=새로운 세트
- i :=1
- 동안 i * i <=n, do
- n mod i가 0과 같으면
- f에 (n / i)의 몫 삽입
- i를 f에 삽입
- 나는 :=나는 + 1
- n mod i가 0과 같으면
- 반환 f
- 메인 방법에서 다음을 수행하십시오. -
- 사실 :=findFactors(n)
- 사실상 각각의 i에 대해 다음을 수행합니다.
- i가 n과 같으면
- 다음 반복으로 이동
- ss :=s[인덱스 0에서 i-1까지]
- val :=s의 ss 발생
- val이 (n/i)의 몫과 같으면
- 참 반환
- i가 n과 같으면
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): n = len(s) def findFactors(n): f = set() i = 1 while(i * i <= n): if(n % i == 0): f.add(int(n / i)) f.add(i) i+= 1 return f fact = findFactors(n) for i in fact: if(i == n): continue ss = s[:i] val = s.count(ss) if(val == int(n / i)): return True return False ob = Solution() print(ob.solve("helloworldhelloworld"))
입력
"helloworldhelloworld"
출력
True