题解 | #公共子串计算#

公共子串计算

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;
    }
}

全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务