Python3 动态规划

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

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

while True:
    try:
        s1 = input()
        s2 = input()
        if len(s1) > len(s2):
            s1, s2 = s2, s1
        m, n = len(s1), len(s2)
        dp = [[0] * (n+1) for _ in range(m+1)]
        index, max_len = 0, 0
        for i in range(1, m+1):
            for j in range(1, n+1):
                if s1[i-1] == s2[j-1]:
                    dp[i][j] = dp[i-1][j-1] + 1
                    if dp[i][j] > max_len:
                        max_len = dp[i][j]
                        index = i
                else:
                    dp[i][j] = 0
        print(s1[index-max_len:index])
    except:
        break
全部评论
else: dp[i][j] = 0 是不是应该换成dp[i][j] = dp[i-1][j-1]?
点赞 回复 分享
发布于 2021-08-18 20:45
题目要求:若有多个,输出在较短串中最先出现的那个。
点赞 回复 分享
发布于 2021-03-23 15:30
请问,为什么要让是保持s1更短了,我尝试去掉这个操作,测试集没有通过,但是没想明白这其中的原因,可以麻烦讲解一下么?
点赞 回复 分享
发布于 2021-03-21 02:41

相关推荐

今年读完研的我无房无车无对象,月入还没有过万 看到他在朋友圈晒房产证,感叹自己白读了这么多年书
梦想是成为七海千秋:那咋了,双9毕业的现在还没存款呢(因为没念完),高中毕业的去直播带货月入几百万也是完全有可能的,退一万步讲,有些人刚出生父母就给买车买房了,上哪说理去,哪怕是同一个起点也会有截然不同的走向,过好自己的生活就完事了。
点赞 评论 收藏
分享
04-17 10:16
门头沟学院 Java
小浪_coder:24届很难找了,马上25的都毕业了还有很多没找到的
点赞 评论 收藏
分享
评论
9
3
分享

创作者周榜

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