1 Star 0 Fork 2

TonyLee/Algorithm

forked from wangjili/Algorithm 
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LongestSubstring.java 1.43 KB
一键复制 编辑 原始数据 按行查看 历史
RosinaWang 提交于 2017-09-05 17:20 +08:00 . first commit
package codingInterviewGuide.part4dp;
/**最长公共子串,得用dp去做
* Created by Dell on 2017-08-10.
*/
public class LongestSubstring {
public int findLongest2(String A, int n, String B, int m) {
int[][] dp=new int[n+1][m+1];
char[] a=A.toCharArray();
char[] b=B.toCharArray();
int len=-1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i]==b[j]){
dp[i+1][j+1]=dp[i][j]+1;
len=Math.max(len,dp[i+1][j+1]);
}
}
}
return len;
}
public int findLongest(String A, int n, String B, int m) {
// int[][] dp=new int[n+1][m+1];
char[] a=A.toCharArray();
char[] b=B.toCharArray();
int len=0,cura=0,curb=0,curlen=0;//按照斜线计算,可将空间压缩至O(1)
//将矩阵上半区统计
for(int j=0;j<m+n;j++){
if(j<n){
cura=j;curb=0;
}else{
cura=0;curb=j-n;
}
curlen=0;
while(cura<n&&curb<m){//从a串第一个字符开始比较,直至其中一个字符超出
if(a[cura]==b[curb]){
curlen+=1;len=Math.max(len,curlen);
}else{
curlen=0;
}cura++;curb++;
}
}
return len;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/TonyLee1024/Algorithm.git
git@gitee.com:TonyLee1024/Algorithm.git
TonyLee1024
Algorithm
Algorithm
master

搜索帮助