# https://[Log in to view URL]
# For two strings s and t, we say "t divides s" if and only if s = t + t + t + ... + t + t (i.e., t is concatenated with itself one or more times).
# Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.
# Example 1:
# Input: str1 = "ABCABC", str2 = "ABC"
# Output: "ABC"
# Example 2:
# Input: str1 = "ABABAB", str2 = "ABAB"
# Output: "AB"
# Example 3:
# Input: str1 = "LEET", str2 = "CODE"
# Output: ""
class Solution:
def gcd(self, a: str, b: str) -> str:
while b != 0:
a, b = b, a % b
return a
def gcdOfStrings(self, str1: str, str2: str) -> str:
g = self.gcd(len(str1), len(str2))
if str1[:g] != str2[:g]:
return ""
common = str1[:g]
if common * (len(str1) // g) != str1:
return ""
if common * (len(str2) // g) != str2:
return ""
return common
To embed this program on your website, copy the following code and paste it into your website's HTML: