题解 | #回文子串的数量#

回文子串的数量

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param str string字符串
 * @return int整型
 */
function Substrings(str) {
    return resolve2(str);
}

function resolve(str) {
    const N = str.length;
    const dp = Array(N).fill().map(() => Array(N).fill(false));
    let res = 0;
    for(let i = N - 1; i >= 0; i--) {
        for(let j = i; j < N; j++) {
            if(str[i] === str[j] && (j - i <= 1 || dp[i+1][j-1])) {
                res++;
                dp[i][j] = true;
            }
        }
    }

    return res;
}

function resolve2(str) {
    let res = 0;
    const N = str.length;

    const huiwen = (str, i, j) => {
        let count = 0;
        while(i >= 0 && j < N && str[i--] === str[j++]) {
            count++;
        }
        return count;
    }

    for(let i = 0; i < N; i++) {
        res += huiwen(str, i, i);
        res += huiwen(str, i, i + 1);
    }

    return res;
}


module.exports = {
    Substrings: Substrings,
};

双指针中心扩展法和动态规划时间复杂度一致,O(N²),双指针的空间复杂度是O(1),动归的空间复杂度是 O(N²)

全部评论

相关推荐

昨天 11:18
门头沟学院 Java
作者先叠个甲:本人双非本,秋招拿到了多个大厂offer,这个过程也不容易,但是在看到很多秋招胜利之后说自己一路有多艰辛的文章,总感觉有一点不对劲,想了很久打算写一篇文章分析一下,本文仅代表作者观点,不认同的可以在评论区大家一起理性讨论。&nbsp;秋招已经结束,各类社交平台出现一大批“大厂上岸”胜利结算。文章的叙事逻辑高度相同,开篇就渲染焦虑和困惑,学习时的挑灯夜读、投递时的屡屡碰壁、面试时的如履薄冰,将过往经历包装成一步艰辛的“奋斗史”,然后最终以大厂offer的胜利结尾,字里行间全是苦尽甘来的优越感。但是在我看来,这类文章的本质是结果导向的、带有浮夸的叙事,因为其内核不是分享经验,而是借“苦难”之名...
创作小队长:你的批判视角非常犀利,尤其“结果决定叙事权”的洞察非常精准,哈哈想邀请你来成为我们的创作者🫰 但我想补充一个视角:许多分享者的初衷并非炫耀结果或者苦难,我更愿意相信他们在这个过程中付出了很多,在这场战役结束后,他们迫不及待地想被看到,记录和分享都是给自己的一个交代,而非真的教会别人什么,他们的初衷未必是想制造焦虑。求职市场的残酷、经济环境的下行、世俗价值观才是这种叙事流行的土壤,作为一个普通人无法抵抗洪流。 感谢你发起这场讨论。理想的社区,既需要这样锐利的批判来保持清醒,你的洞察非常犀利,也许会启发一些人,能逐渐改变这种叙事~
点赞 评论 收藏
分享
2025-12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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