题解 | #公共子串计算#推荐一个b站的视频,讲这个
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case // 输入两个字符串 String s1=""; String s2=""; s1=in.next(); s2=in.next(); int max=0; // s1的前i个字符串,与s2的前j个字符串的公共子串 // 初始化 int dp[][]=new int[s1.length()+1][s2.length()+1]; for(int i=1;i<dp.length;i++){ for(int j=1;j<dp[0].length;j++){ // 注意字符串下标是从0开始 if(s1.charAt(i-1)==s2.charAt(j-1)){ dp[i][j]=dp[i-1][j-1]+1; max=Math.max(dp[i][j],max); } } } System.out.println(max); } } }