题解 | #查找两个字符串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)); } }