Greatest Common Divisor of Strings in Python


Suppose there are two strings A and B. We can say that A is divisible by B, when A is created by concatenating B one or more times. So if A = “abcabc”, and B = “abc”, then A is divisible by B. In this section, we will see what is the greatest common divisor of a String. So return the largest string that divides both of the strings. So if two strings are “ABABAB”, and “ABAB”, then GCD will be “AB”

To solve this, we will follow these steps −

  • temp := shorter string between A and B
  • m := length of temp
  • x := 1
  • res is an array and insert “” into the res
  • while A and B has substring of size x, then add the substring into the res, and increase x by 1
  • finally return the last element in the res array.

Example

Let us see the following implementation to get better understanding −

 Live Demo

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"))

Input

"ABABAB"
"ABAB"

Output

AB

Updated on: 28-Apr-2020

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements