题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.nextLine(); String str2 = sc.nextLine(); int sunMax = getSunMaxByDP(str1, str2); System.out.println(sunMax); } //动态规划逻辑 private static int getSunMaxByDP(String str1, String str2){ //1、转化为字符数组 char[] arr1 = str1.toCharArray(); char[] arr2 = str2.toCharArray(); //2、构建dp数组 int[][] dp = new int[arr1.length+1][arr2.length+1]; //3、处理边界问题 for (int i = 0; i <= arr1.length; i++) { dp[i][0] = 0; } for (int j = 0; j <= arr2.length; j++) { dp[0][j] = 0; } int res = 0; for (int i = 1; i <= arr1.length; i++) { for (int j = 1; j <= arr2.length; j++) { if (arr1[i-1]==arr2[j-1]){ dp[i][j] = dp[i-1][j-1]+1; }else { dp[i][j] = 0; } res = Math.max(dp[i][j],res); } } return res; } }