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

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

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

子串搜索

  1. 基于较短的字符串进行子串划分;
  2. 子串长度由长到短,顺序由前向后,发现子串在较长字符串中存在时,返回子串。
def find_long_sub_str(a: str, b: str) -> str:
    na, nb = len(a), len(b)
    if na > nb:
        n = nb
        s = b
        p = a
    else:
        n = na
        s = a
        p = b
    for L in range(n, 0, -1):
        # L表示公共子串的长度
        for i in range(n):
            # 右边界超出,实际长度不能满足L
            if L + i + 1 > n:
                break
            sub_str = s[i: L + i + 1]
            # print(f'sub str is {sub_str}')
            if sub_str in p:
                return sub_str
    return ''


a = input()
b = input()
c = find_long_sub_str(a, b)
print(c)
全部评论

相关推荐

Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务