For strings S
and T
, we say "T
divides S
" if and only if S = T + ... + T
(T
concatenated with itself 1 or more times)
Return the largest string X
such that X
divides str1 and X
divides 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: ""
Note:
1 <= str1.length <= 1000
1 <= str2.length <= 1000
str1[i]
andstr2[i]
are English uppercase letters.
class Solution(object):
def gcdOfStrings(self, str1, str2):
"""
:type str1: str
:type str2: str
:rtype: str
"""
def get(s):
n=len(s)
res=set()
for i in range(1,n+1):
if n%i!=0: continue
tmp=set([s[j:j+i] for j in range(0,n,i)])
if len(tmp)==1: res.add(s[:i])
return res
s1=get(str1)
s2=get(str2)
# print(s1,s2)
s=list(s1&s2)
s.sort(key=len)
return s[-1] if s else ""