题解 | #密码截取#

密码截取

https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
// 解题思路:通过动态规划
// 定义状态:dp[i][j]=true,表示从i到j为回文字符串
// 初始化状态
// 状态转移方程:input[i]=input[j],则dp[i][j]取决于dp[i+1][j-1],如果不相等,则dp[i][j]=false
// 打印结果maxSubLen
void (async function () {
    // Write your code here
    while ((input = await readline())) {
        const inputLen = input.length;
        let maxSubLen = 1;
        let dp = Array.from({ length: inputLen }, (value,index) =>
            Array(index+1).fill(false)
        );
        for (let i = 0; i < inputLen; i++) {
            dp[i][i] = true;
        }
        for (let curLen = 2; curLen <= inputLen; curLen++) {
            if(curLen<maxSubLen)break;
            for (let i = 0; i <= inputLen - curLen; i++) {
                let j = i + curLen - 1;
                if (input[i] == input[j] && (curLen==2||dp[i + 1][j - 1])) {
                    maxSubLen = curLen;
                    dp[i][j] = true;
                }
            }
        }
        console.log(maxSubLen);
    }
})();

全部评论

相关推荐

彧未sr:查看图片
投递牧原集团等公司7个岗位
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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