取出两个字符串中最大相同的子串
//************************************************************************* //题目要求: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 // *************************************************************************
求最大相同字符串的代码忘了参考那位仁兄的了,对不住喽!