题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

遍历短的串s1,依次截取 短的串每个索引i其[len(s1),len(s1)-1,len(s1)-2,...,i]索引的串,是否在长串内。

在则不断更新最长子串即可。

注意:第二层遍历到i即可;且找到一个子串后即可break当前索引,节省时间。

def fun():
    s1, s2 = input(), input()
    max_com_sub_s = '',
    s1, s2 = (s1, s2) if len(s1) < len(s2) else (s2, s1)  # s1是短的
    for i in range(len(s1)):  # 遍历短的
        for j in range(len(s1), i, -1):  # 从末尾开始遍历,有子串时即可退出
            if s1[i:j] in s2 and len(s1[i:j]) > len(max_com_sub_s):  # 找到子串并且长度更大
                max_com_sub_s = s1[i:j]  # 替换最大子串
                break  # 找到子串后即使当前位置最大子串
    print(max_com_sub_s)


fun()

全部评论

相关推荐

冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务