最长公共子串问题-动态规划

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b?tpId=37&tqId=21298&rp=1&ru=/ta/huawei/&qru=/ta/huawei&difficulty=3&judgeStatus=&tags=/question-ranking

状态转移方程

如果str1[i] == str2[j],那么dp[i][j] = dp[i-1][j-1];

如果str1[i] != str2[j],那么dp[i][j] = 0;

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let arr = [];
let str1;//存储第一行字符串
let str2;//存储第二行字符串
let max = 0;//存储最大公共子串的长度
rl.on('line', function (line) {
    arr.push(line.split(''));
    str1 = arr[0];
    str2 = arr[1];
    if(arr.length==2){
        let dp = new Array(str2.length+1);
        for(let i = 0; i < str2.length+1; i++){//初始化二维数组
            dp[i] = new Array(str1.length+1).fill(0);
        }
        for(let m = 1; m < dp.length; m++){//遍历二维数组
            for(let n = 1; n < dp[0].length; n++){
                if(str2[m-1]==str1[n-1]){//状态转移方程
                    dp[m][n] = dp[m-1][n-1]+1;
                    max = Math.max(max,dp[m][n])
                }
            }
        }
        console.log(max)
    }
});
全部评论

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务