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

파이썬에서 문자열의 최대공약수

<시간/>

두 개의 문자열 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