博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lintcode: Longest Common Substring
阅读量:5160 次
发布时间:2019-06-13

本文共 1245 字,大约阅读时间需要 4 分钟。

Given two strings, find the longest common substring.Return the length of it.NoteThe characters in substring should occur continiously in original string. This is different with subsequnce.ExampleGiven A=“ABCD”, B=“CBCE”, return  2
DP:
D[i][j] 定义为:两个string的前i个和前j个字符串,尾部连到最后的最长子串。
D[i][j] = 
1. i = 0 || j = 0 : 0
2. s1.char[i - 1] = s2.char[j - 1] ? D[i-1][j-1] + 1 : 0;
另外,创建一个max的缓存,不段更新即可。
1 public class Solution { 2     /** 3      * @param A, B: Two strings. 4      * @return: The length of longest common subsequence of A and B. 5      */ 6     public int longestCommonSubstring(String A, String B) { 7         // write your code here 8         int[][] res = new int[A.length()+1][B.length()+1]; 9         int result = 0;10         for (int i=0; i<=A.length(); i++) {11             for (int j=0; j<=B.length(); j++) {12                 if (i==0 || j==0) {13                     res[i][j] = 0;14                     continue;15                 }16                 if (A.charAt(i-1) != B.charAt(j-1)) res[i][j] = 0;17                 else res[i][j] = res[i-1][j-1]+1;18                 result = Math.max(result, res[i][j]);19             }20         }21         return result;22     }23 }

 

转载于:https://www.cnblogs.com/EdwardLiu/p/4323159.html

你可能感兴趣的文章
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>