对于字符串 S
和 T
,只有在 S = T + ... + T
(T
与自身连接 1 次或多次)时,我们才认定 “T
能除尽 S
”。
返回字符串 X
,要求满足 X
能除尽 str1
且 X
能除尽 str2
。
示例 1:
输入:str1 = "ABCABC", str2 = "ABC"
输出:"ABC"
示例 2:
输入:str1 = "ABABAB", str2 = "ABAB"
输出:"AB"
示例 3:
输入:str1 = "LEET", str2 = "CODE"
输出:""
提示:
1 <= str1.length <= 1000
1 <= str2.length <= 1000
str1[i]
和str2[i]
为大写英文字母
思路:
题目需要求同时满足两个条件的字符串,那就把分别满足一个条件的字符串找出来,
然后取交集,返回长度最长的那个即可。
class Solution(object):
def gcdOfStrings(self, str1, str2):
"""
:type str1: str
:type str2: str
:rtype: str
"""
l1,l2 = len(str1), len(str2)
set1, set2 = set(), set()
for i in range(l1 + 1):
if self.find(str1, str1[:i]):
set1.add(str1[:i])
for i in range(l2 + 1):
if self.find(str2, str2[:i]):
set2.add(str2[:i])
res = list(set1 & set2)
res = sorted(res, key = lambda x:-len(x))
return res[0] if res else ""
def find(self, string, tmp):
string = string.replace(tmp, "")
return len(string) == 0