leetcode每日一题 python解法 3月12日
2020-03-12 本文已影响0人
Never肥宅
难度:简单
题目内容:
对于字符串 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] 为大写英文字母
题解:
这个自身链接就是两个字符串共有的子字符串
可以从小的开始,截成n、(n-1)。。。。。。1段,依次看能不能被长字符串整除
就附上一个简单的答案吧,虽然效果不太好,能用
class Solution:
def gcdOfStrings(self, str1: str, str2: str) -> str:
if len(str1) > len(str2):
return self.commonSon(str1,str2)
else:
return self.commonSon(str2,str1)
def commonSon(self,longStr,shortStr):
r = ""
for i in range(1,len(shortStr)+1):
if self.canDivide(shortStr,shortStr[0:i]) and self.canDivide(longStr,shortStr[0:i]):
if i > len(r):
r = shortStr[0:i]
return r
def canDivide(self,string,x):
xlen = len(x)
slen = len(string)
if not (slen % xlen == 0):
return False
else:
if x*int(slen/xlen) == string:
return True
else:
return False