두 개의 문자열 A와 B가 있다고 가정합니다. B를 한 번 이상 연결하여 A를 만들 때 A를 B로 나눌 수 있다고 말할 수 있습니다. 따라서 A ="abcabc"이고 B ="abc"이면 A는 B로 나눌 수 있습니다. 이 섹션에서는 문자열의 최대 공약수가 무엇인지 볼 것입니다. 따라서 두 문자열을 모두 나누는 가장 큰 문자열을 반환합니다. 따라서 두 문자열이 "ABABAB" 및 "ABAB"이면 GCD는 "AB"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp :=A와 B 사이의 짧은 문자열
- m :=온도의 길이
- x :=1
- res는 배열이며 res에 ""를 삽입합니다.
- A와 B가 x 크기의 부분 문자열을 가지고 있는 동안, 부분 문자열을 res에 추가하고 x를 1만큼 증가시킵니다.
- 마지막으로 res 배열의 마지막 요소를 반환합니다.
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def gcdOfStrings(self, str1, str2): if len(str1)<=len(str2): temp = str1 else: temp = str2 m = len(temp) x = 1 res=[""] while x<=m: if m%x==0 and temp[:x] * (len(str1)//x) == str1 and temp[:x] * (len(str2)//x) == str2: res.append(temp[:x]) x+=1 return res[-1] ob1 = Solution() print(ob1.gcdOfStrings("ABABAB","ABAB"))
입력
"ABABAB" "ABAB"
출력
AB