题解 | #查找两个字符串a,b中的最长公共子串# 动态规划
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.nextLine();
String b = in.nextLine();
if(a.length()>b.length()) {
String c = a;
a = b;
b = c;
}
char[]A = a.toCharArray();
char[]B = b.toCharArray();
int[][]arr = new int[A.length+1][B.length+1];
int maxLen = 0, endIndex = 0;
for(int i=1;i<=A.length;i++) {
for(int j=1;j<=B.length;j++) {
if(A[i-1]==B[j-1]) {
arr[i][j] = arr[i-1][j-1] + 1;
if(maxLen<arr[i][j]) {
maxLen = arr[i][j];
endIndex = i;
}
} else {
arr[i][j] = 0;
}
}
}
System.out.println(a.substring(endIndex-maxLen, endIndex));
}
}
