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

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

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

import sys

#输入
n1 , m1 = input() , input()
#初始化
if len(n1) > len(m1):
    s = n1
    n1 = m1
    m1 = s
n = len(n1)
m = len(m1)

#数组
dp = [[0]*m for _ in range(n)]

for i in range(n):
    for j in range(m):
        if n1[i] == m1[j]:
            dp[i][j] = 1

#找到最长字串的长度
for i in range(1,n):
    for j in range(1,m):
        if dp[i][j] == 1:
            dp[i][j] += dp[i-1][j-1]

#找到下标并输出
ans, mm  = 0, 0
for i in range(n):
    if max(dp[i]) > ans:
        mm = i
        ans = max(dp[i])
print(n1[mm-ans+1:mm+1])




全部评论

相关推荐

01-15 19:59
中山大学 C++
牛客60887332...:你这是人写出来的? 本科标到硕士后面 留那么多空给 hr 填?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-15 20:52
黑皮白袜臭脚体育生:五宿大战是吧,死去的记忆还在攻击我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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