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

import sys
   
raw_input = []
for i,line in enumerate(sys.stdin):
    raw_input.append(line.strip())
    if i == 2:
        break

str_a, str_b = raw_input[0], raw_input[1]
if len(str_a) > len(str_b):
    str_a, str_b = str_b, str_a
len_a, len_b = len(str_a), len(str_b)
scores = [[0] * len_b for _ in range(len_a)]
res_value = 0
res_pos = None
for i in range(len_a):
    for j in range(len_b):
        if i == 0 or j == 0:
            scores[i][j] = int(str_a[i] == str_b[j])
        else:
            if str_a[i] != str_b[j]:
                scores[i][j] = 0
            else:
                scores[i][j] = scores[i-1][j-1] + 1
        if scores[i][j] > res_value:
            res_value = scores[i][j]
            res_pos = i
            
if res_value == 0:
    print('')
print(str_a[res_pos+1 - res_value:res_pos + 1])

全部评论

相关推荐

05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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