java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度

2023-05-13,,

package tek;

  Java算法——求出两个字符串的最长公共字符串

/**
* @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串。
* @author 匹夫(在YW的数据基础上再次延伸)
* @date 2017年4月19日 下午8:08:37
*/
public class Demo1 { /*
//减0 个字符 内循环1次
k2.substring(0, 7);//外循环第1次_内循环第1次
//减一个字符 内循环2次
k2.substring(0, 6);//外循环第2次_内循环第1次
k2.substring(1, 7);//外循环第2次_内循环第2次
//减两个字符 内循环3次
k2.substring(0, 5);// 外循环第3次_内循环第1次
k2.substring(1, 6);// 外循环第3次_内循环第2次
k2.substring(2, 7);// 外循环第3次_内循环第2次
//减3个字符 内循环4次
k2.substring(0, 4);// 外循环第4次_内循环第1次
k2.substring(1, 5);// 外循环第4次_内循环第2次
k2.substring(2, 6);// 外循环第4次_内循环第3次
k2.substring(3, 7);// 外循环第4次_内循环第4次
*/
public static void main(String [] args){
String k1 = "10101121018";
String k2 = "101210182";
String max = null;
String max_str = null;
String min_str = null;
if(k1.length()==k2.length()){
max_str = k1;
min_str = k2;
}else if(k1.length()>k2.length()){
max_str = k1;
min_str = k2;
}else{
max_str = k2;
min_str = k1;
}
int index = 0;
for(int x=min_str.length();x>=0;x--){
int b = x;
boolean flag = false;
for(int y=0;y<=min_str.length()-x;y++){
index++;
int v = y;
String wait_max = min_str.substring(v, b);
if(max_str.contains(wait_max)){
max = wait_max;
flag = true;
break;
}
b++;
}
if(flag){
break;
}
}
System.out.println(index);
System.out.println(max);
} }
String ms = "01012101121301";
String ds = "0121121301"; 0121121301 ms.contain(ds.substring(x,y));
x
思路2
10个字符1次
1 0121121301 10 ms.contain(ds.substring(0,10)); 9个字符串2次
2 012112130 9 ms.contain(ds.substring(0,9));
3 121121301 9 ms.contain(ds.substring(1,10)); 8个字符3次
4 01211213 8 ms.contain(ds.substring(0,8));
5 12112130 8 ms.contain(ds.substring(1,9));
6 21121301 8 ms.contain(ds.substring(2,10)); 7个字符4次
7 0121121 7 ms.contain(ds.substring(0,7));
8 1211213 7 ms.contain(ds.substring(1,8));
9 2112130 7 ms.contain(ds.substring(2,9));
10 1121301 7 ms.contain(ds.substring(3,10)); 思路1
String temp_max = 0121, int x = 0;
int y= 10;
ms.contain(ds.substring(x,y)); 1 0121121301 ms.contain(ds.substring(0,10));
2 012112130 ms.contain(ds.substring(0,9));
3 01211213 ms.contain(ds.substring(0,8));
4 0121121 ms.contain(ds.substring(0,7));
5 012112 ms.contain(ds.substring(0,6));
6 01211 ms.contain(ds.substring(0,5));
7 0121 ms.contain(ds.substring(0,4)); 8 121121301 ms.contain(ds.substring(1,10));
9 12112130 ms.contain(ds.substring(1,9));
10 1211213 ms.contain(ds.substring(1,8));
11 121121 ms.contain(ds.substring(1,7));
12 12112 ms.contain(ds.substring(1,6));
13 1211 ms.contain(ds.substring(1,5));
14 121 ms.contain(ds.substring(1,4)); 15 21121301 ms.contain(ds.substring(2,10));
16 2112130 ms.contain(ds.substring(2,9));
17 211213 ms.contain(ds.substring(2,8));
18 21121 ms.contain(ds.substring(2,7)); 19 1121301 ms.contain(ds.substring(3,10));

 

java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度的相关教程结束。

《java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度.doc》

下载本文的Word格式文档,以方便收藏与打印。