const countSubstrings = (s) => { const strLen = s.length; let numOfPalindromicStr = 0; // 初始化一个二维数组 let dp = Array.from(Array(strLen), () => Array(strLen).fill(false)); //对于动态规划问题,首先要看清两层for循环的结构,看看遍历的是哪些区域,哪些内容 for (let j = 0; j < strLen; j++) { for (let i = 0; i <= j; i++) { // 外层的if是个分支结构,因为这个默认都是false,所以else的情况就是不用写 if (s[i] === s[j]) { // 内层的if也是分支结构,主要用来将两种情况进行分流,对两种情况进行不同的逻辑处理 if (j - i < 2) { dp[i][j] = true; } else { dp[i][j] = dp[i + 1][j - 1]; } // 对回文子串的个数进行计数 numOfPalindromicStr += dp[i][j] ? 1 : 0; console.log(dp); } } } return numOfPalindromicStr; }; const res = countSubstrings("cabac"); console.log(res);
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-10-20 vu_vue3.0LearnNote_network_network
2021-10-20 vu_vue3.0LearnNote