面试题记录,备忘

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 }

原文地址:https://www.cnblogs.com/test-researcher/p/9375136.html