题解 | #查找两个字符串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 s1=in.nextLine(); String s2=in.nextLine(); int index=0; int max=0; if(s1.length()>s2.length()) { String tmp=s1; s1=s2; s2=tmp; } int[][] dp=new int[s1.length()+1][s2.length()+1]; for(int i=1;i<=s1.length();i++) { for(int j=1;j<=s2.length();j++) { if(s1.charAt(i-1)==s2.charAt(j-1))//否则九尾0 { dp[i][j]=dp[i-1][j-1]+1;//续前缘 if(max<dp[i][j]) { index=i-1;//索引 max=dp[i][j]; } } } } System.out.println(s1.substring(index-max+1,index+1)); } }