# 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

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: