首页 > 代码库 > 取出两个字符串中最大相同的子串

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

//*************************************************************************//题目要求:4、取出两个字符串中最大相同的子串。//*************************************************************************public class SearchMaxSameString {    public static void main(String[] args) {        String str1 = null;        String str2 = null;        String maxStr = null;        // 输入两个字符串        Scanner input = new Scanner(System.in);        System.out.print("请输入字符串str1:");        str1 = input.nextLine();        System.out.print("请输入字符串str2:");        str2 = input.nextLine();        // 将输入的两个字符串安长短区分开        String shortStr = str1.length() > str2.length() ? str2 : str1;        String longStr = shortStr.equals(str1) ? str2 : str1;        // 调用maxSerach获得最大字符串        maxStr = maxString(shortStr, longStr);        // 输出字符串        System.out.println("最大相同子串是:" + maxStr);        input.close();    }    // 定义静态方法maxSerach来获得最大字符串    public static String maxString(String shortStr, String longStr) {        // 定义一个空字符串来存储最大字符串        String maxStr = "";        // 以两个字符串中短字符串为准,来求得最大相同字符串        for (int i = 0; i < shortStr.length(); i++) {            // 从前往后,依次截取子字符串存放在临时字符串temp1中            String temp1 = shortStr.substring(i);            for (int j = temp1.length() - 1; j >= 0; j--) {                // 在获得的临时子字符串temp1上再从后往前截取,以获得所有子字符串存放到temp2                String temp2 = temp1.substring(0, j);                // 如果存在子字符串,并且该子字符串的长度最大则付给maxStr                if (longStr.indexOf(temp2) != -1                        && temp2.length() > maxStr.length()) {                    maxStr = temp2;                }            }        }        // 返回maxStr        return maxStr;    }}// *************************************************************************// 测试结果:// 请输入字符串str1:ffdsajoifwwqn3342nkjnf23n42fsd// 请输入字符串str2:fdafioenrjoifwwqn3342nkjnf23n4023jfs,adfj// 最大相同子串是:joifwwqn3342nkjnf23n4// *************************************************************************

求最大相同字符串的代码忘了参考那位仁兄的了,对不住喽!

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