题解 | 查找两个字符串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])

全部评论

相关推荐

04-01 12:25
中南大学 Java
枯基Evan_:腾讯一面写过11次的题目没写出来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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