两个字符串中最大相同的子串

 1 /*
 2  * 两个字符串中最大相同的子串。
 3  *
 4  *
 5  *
 6  * 思路:
 7  * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
 8  * 如果存在,短的那个字符串就是最大子串。
 9  * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
10  * 如果存在就已找到,就不用在找了。
11  */
12 
13 public class Test2 {
14 
15     public static void main(String[] args) {
16 
17         String s1 = "qwerabcdtyuiop";
18         String s2 = "xcabcdvbn";
19         String s = getMaxSubstring(s1, s2);
20         System.out.println("s=" + s);
21 
22     }
23 
24     private static String getMaxSubstring(String s1, String s2) {
25         String max = null, min = null;
26         max = (s1.length() > s2.length()) ? s1 : s2;
27         min = max.equals(s1) ? s2 : s1;
28         for (int i = 0; i < min.length(); i++) {
29             for (int x = 0, y = min.length() - i; y != min.length() + 1; x++, y++) {
30                 String sub = min.substring(x, y);
31                 if (max.contains(sub))
32                     return sub;
33             }
34 
35         }
36         return null;
37     }
38 
39 }

 

posted @ 2014-09-22 22:11  加肥猫咪  阅读(427)  评论(0编辑  收藏  举报