java基础知识回顾之---java String final类普通方法的应用之“两个字符串中最大相同的子串”

/*
 * 3,两个字符串中最大相同的子串。
 * "qwerabcdtyuiop"
 * "xcabcdvbn"
 *
 * 思路:
 * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
 *   如果存在,短的那个字符串就是最大子串。
 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式取子串,去长串中判断是否存在。
 *   如果存在就已找到,就不用在找了。
 * 3.先找最大的子串,再递减子串找,找到,就停止
 */

原理图如图:

代码:

public class StringMax {



    /**

     * @param args

     */

    public static void main(String[] args) {



        String s1 = "qwerabcdtyuiop";

        String s2 = "xcabcdvbn";



        String s = getMax(s2, s1);

        System.out.println("s=" + s);

    }

    

    

    public static String getMax(String s1,String s2){

        //我们不知道S1,S2哪个大的情况下,判断并取出大的和小的

        String max,min = null;

        max = (s1.length() > s2.length()?s1:s2);

        min = max.equals(s1)?s2:s1;//如果大的与S1相等,就返回S2作为小的子符串

        for(int i=0;i<s1.length();i++){

            for(int a=0,b=s1.length()-i; b!=s1.length()+1;a++,b++){//从图中可以看到,a,b为字符串的量端,当len=8的时候,a=0,b=7;a=1,b=8

                String subStr = s1.substring(a,b);//len=8的时候子字符串为:xcabcdvb,cabcdvbn为两个

                if(s2.contains(subStr)){//判断大的字符串中是否包含子串

                    return subStr;

                }

            }

        }

        return null;

    }



    /**

     * 获取最大子串

     * 

     * @param s1

     * @param s2

     * @return

     */

    public static String getMaxSubstring(String s1, String s2) {

        

        String max = null,min = null;

        max = (s1.length()>s2.length())?s1:s2;//判断s1和s2哪个长,确定长的字符串和短的字符串

        min = max.equals(s1)?s2:s1;

        System.out.println("max="+max);

        System.out.println("min="+min);

        

        for (int i = 0; i < min.length(); i++) {

            

            for(int a = 0,b = min.length()-i; b != min.length()+1; a++,b++){//从大到小短的字符串递减

                

                String sub = min.substring(a, b);

                System.out.println(sub);//打印没每次内循环产生不同长度的子串

                if(max.contains(sub))//长的字符串是否包含短的子串

                    return sub;

            }

        }

        

        return null;

    }

}

 

你可能感兴趣的:(java String)