题目描述
查找两个字符串a,b中的最长公共子串
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
输入例子:
abcdefghijklmnop abcsafjklmnopqrstuvw
输出例子:
jklmnop
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
String str1 = scan.nextLine();
String str2 = scan.nextLine();
longestCommonSubstring(str1, str2);
}//endwhile
scan.close();
}
/**
* 打印输出两个字符串的最长公共子串
* */
private static void longestCommonSubstring(String str1 , String str2){
String long_str = str1.length() >= str2.length() ? str1 : str2;
String short_str = str1.length() < str2.length() ? str1 : str2;
String final_str = "";
int short_length = short_str.length();
int length = 0;
for(int i = 0 ; i < short_length - 1 ; i++){
for(int j = i + 1 ; j <= short_length ; j++ ){
if(long_str.contains(short_str.substring(i, j)) && j - i > length){
length = j - i;
final_str = short_str.substring(i, j);
}
}
}
System.out.println(final_str);
}
}
本文介绍了一种用于查找两个字符串中的最长公共子串的有效算法,并通过Java代码实现了该算法。文章详细解释了如何逐个比较较短字符串的子串是否包含在较长字符串中,以找到最长的匹配项。
2696

被折叠的 条评论
为什么被折叠?



