题解 | #最长公共子串#

最长公共子串

http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

  1. 描述
  2. 给定两个字符串str1和str2,输出两个字符串的最长公共子串
  3. 题目保证str1和str2的最长公共子串存在且唯一。
  4. 数据范围: 1 \le |str1|,|str2| \le 50001≤∣str1∣,∣str2∣≤5000
  5. 要求: 空间复杂度 O(n^2)O(n
  6. 2
  7. ),时间复杂度 O(n^2)O(n
  8. 2
  9. )
  10. 示例1
  11. 输入:
  12. "1AB2345CD","12345EF"
  13. 复制
  14. 返回值:
  15. "2345" alt

这个题目使用滑窗的思路 就是 以最长的 str1字符串为操作主题,然后设置左指针,当前选取的字符如果在这个st2中则 i顺延一位, left做指针不变,就可以。

    def LCS(self , str1: str, str2: str) -> str:
        res=""
        left=0
        for i in range(len(str1)+1):
            if str1[i-left:i] in str2:
                res=str1[i-left:i]
                left+=1
        return res
全部评论
牛蛙牛蛙
点赞 回复 分享
发布于 2022-03-06 17:17
最短的好像也是可以 但是我觉得时间复杂度用哪个都一样
点赞 回复 分享
发布于 2022-03-06 09:52
请问为什么要使用最长的字符串呢?用短的str循环次数不是更少嘛
点赞 回复 分享
发布于 2022-03-05 14:16

相关推荐

不愿透露姓名的神秘牛友
07-01 11:47
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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