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

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

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

while True:
    try:
        a, b = input(), input() # a保存短,b保存长
        if len(a) > len(b):
            a, b = b, a
        res = ''
        for i in range(0, len(a)):
            for j in range(i+1, len(a)):
                if a[i:j+1] in b and j+1-i > len(res):
                    res = a[i:j+1]
        print(res)
    except:
        break
全部评论
while True: try: a, b = input(), input() # a保存短,b保存长 if len(a) > len(b): a, b = b, a res = '' for i in range(0, len(a)): for j in range(i, len(a)): #应该是这样吧,不然字符串为1时取不到 if a[i:j+1] in b and j+1-i > len(res): res = a[i:j+1] print(res) except: break
3 回复 分享
发布于 2022-06-17 20:45
没有考虑字符串长度为1
3 回复 分享
发布于 2021-10-22 15:28
看到两个相似的答案,不知道你俩谁抄谁的,这里面有个明显的错误就是j遍历起点i+1(应该是i),如果只有1个字符匹配,岂不是判断不出来???(不信你把自测用例写成a="abb",b="accc")抄之前动动脑子考虑一下啊,骗自己可不好啊
2 回复 分享
发布于 2023-04-10 14:55 陕西
第8行应该是range(i, len(a)),否则a="c", b="c"时输出为空,测试用例里没有这种情况
点赞 回复 分享
发布于 2023-02-17 09:36 江苏
6楼和10楼老哥说得对,第8行改成 for j in range(i#这里是i,不是i+1#, len(a)):
点赞 回复 分享
发布于 2023-07-17 05:42 美国
哪位大佬可以给解释下吗
点赞 回复 分享
发布于 2023-03-10 10:01 陕西
第九行有点看不懂
点赞 回复 分享
发布于 2023-03-10 10:00 陕西
有bug,相等的情况下,有问题 a=111222abc333444555 b=555123cccabc567890,应该是555,实际上结果是abc
点赞 回复 分享
发布于 2022-06-14 23:33
a = mss b = am 这个用例呢?
点赞 回复 分享
发布于 2022-04-28 08:59
len(a),应该改为len(a)+1,否则最后一位取不到
点赞 回复 分享
发布于 2022-03-05 00:40
长度为1也可以的~
点赞 回复 分享
发布于 2021-10-22 15:54

相关推荐

评论
76
12
分享

创作者周榜

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