面试题记录,备忘

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 }

猜你喜欢

转载自www.cnblogs.com/test-researcher/p/9375136.html