题解 | #最长公共子串#

最长公共子串

https://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# longest common substring
# @param str1 string字符串 the string
# @param str2 string字符串 the string
# @return string字符串
#
class Solution:
    def LCS(self, str1: str, str2: str) -> str:
        m, n = len(str1), len(str2)
        top, digit = min(m, n), 0
        while top // (10 ** digit) > 10:
            digit += 1
        while digit >= 0:
            longest, index = 0, 0
            for length in range(top, 0, -(10 ** digit)):
                for i in range(m - length + 1):
                    if str1[i : i + length] in str2:
                        longest = length
                        index = i
                        break
                if longest:
                    break
            top = length + 10 ** digit
            digit -= 1

        return str1[index : index + longest]

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务