标签:判断 print 测试 class 最大 list str ESS als
1 找到两个字符串中的公共子字符串,如stra="abfdsaf",strb="fdsgdfg",找出两个字符串的公共字串fds,由于java还不熟练,不是最优的方案,有机会优化
1 public class MyTestDemo {
2 //被测试字符串a
3 String stra = "abfdsaf";
4 //被测试字符串a
5 String strb = "abfdsaf";//fdsgdfg
6 //存储两个字符串的最大长度和最小长度
7 int min,max;
8 //判断出最长的字符串后,将长度最大的字符串存储再strMax,长度小的字符串给strMin
9 String strMin,strMax;
10 //存储找到的所有字符串
11 ArrayList<String> sameString = new ArrayList();
12 //存储最大子字符串
13 String result;
14
15 @Test
16 public void getSameSubString(){
17 //找出长短字符串,并赋值给变量
18 if(stra.length() <= strb.length()?true:false){
19 min = stra.length();
20 max = strb.length();
21
22 strMin = stra;
23 strMax = strb;
24
25 isSubString();
26 }
27 else{
28 min = strb.length();
29 max = stra.length();
30
31 strMin = strb;
32 strMax = stra;
33
34 isSubString();
35 }
36 }
37
38 /**
39 * 遍历最小长度字符串,截取子字符串,依次左移截取,每次遍历截取子字符串,并使用indexOf方法,判断截取的字符串是否在最大长度的字符串中出现,如果出现就添加到ArrayList中,最后遍历ArrayList,找到最大长度的字符串
40 */
41 public void isSubString(){
42 String more,less,temp;
43 for(int j=0;j<=min;j++){
44 for(int i=min;i>=j;i--){
45 if(strMax.indexOf(strMin)>0){
46 sameString.add(strMin);
47 }
48 if((strMax.indexOf(strMin.substring(j, i))) > 0 ){
49 sameString.add((strMin.substring(j, i))); //还有题目要求找出最大公共字符串,再if里加上break即可,不加则输出所有子字符串
50 }
51 }
52 }
53 result = sameString.get(0);
54
55 for(int i=1;i<sameString.size();i++){
56 if(result.length() < sameString.get(i).length()){
57 result = sameString.get(i);
58 }
59 }
60 System.out.println(result);
61 }
62 }
2
标签:判断 print 测试 class 最大 list str ESS als
原文地址:https://www.cnblogs.com/test-researcher/p/9375136.html