题解 | #最长公共子串#

最长公共子串

https://www.nowcoder.com/practice/02e7cc263f8a49e8b1e1dc9c116f7602

# -*- coding:utf-8 -*-

class LongestSubstring:
    def findLongest(self, A, n, B, m):
        # write code here
        dp = [ [0 for _ in range(m+1)] for __ in range(n+1) ]
        max_res = 0
        for i in range(1,n+1):
            for j in range(1,m+1):
                # print(i,j,len(A),len(B))
                if A[i-1]==B[j-1]:
                    dp[i][j] = dp[i-1][j-1]+1
                    max_res = max(max_res,dp[i][j])
        return max_res

和评论区大佬们说的差不多,就是和“最长公共子序列”的题目有点不一样,这个必须得是公共子串,所以在处理A[i]!=B[j]的时候,不管就可以了。dp矩阵的含义就是:当前连续相等的长度。由于这个是从小到大遍历的,所以当A[i]==B[j]的时候会去找dp[i-1][j-1],如果dp[i-1][j-1]已经大于0(当然等于0也OK),那就说明这之前就已经有连续相等的了,现在再多一个,所以状态转移方程是:dp[i][j]=dp[i-1][j-1]+1,然后如果不等于,那就说明无论去前面找哪个,一旦到了这里都不再是连续的子串了,直接置为0,所以状态转移方程再添加一种情况:dp[i][j] = 0 if A[i]!=B[j]。

全部评论

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
矫健的闭门羹烹饪师又熬夜了:本人双非本,在鹅厂测开实习,你这个简历上写的这两个项目的技术栈都差不多,能够让面试官去延伸去问的八股除了redis就再没啥了,建议项目这边可以再改改,然后专业技能那块的话,感觉linux和测试工具可以分开写,毕竟不是干一件事的,反正没实习的基础上面试就深挖项目和八股,好好卷吧
点赞 评论 收藏
分享
05-07 19:10
已编辑
中国科学技术大学 C++
silly01:现在先去 momenta,8-9月去鹅找日常实习,八股文算法背好了你这随便进。不过建议补充一下后端知识,MySQL、Redis看下八股,再补个6824,加点go后台的技术栈,9月随便进大厂。CPP后端只能来WXG
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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