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

上一篇下一篇

猜你喜欢

热点阅读