题目:
给你一个字符串 s,找到 s 中最长的 回文 子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
解析:
这道题使用动态规划解决更加的方便,主要还是怎么去定义dp数组,在这里dp[i][j]表示字符串 s 中下标从 i 到 j 的子串 s[i…j] 是否为回文子串。
具体解析见链接:力扣解析
具体代码:
/** * @param {string} s * @return {string} */varlongestPalindrome=function(s){constlen=s.lengthif(len<2)returnsletmaxLength=1letbegin=0constdp=Array.from({length:len},()=>Array(len).fill(false))for(leti=0;i<len;i++){dp[i][i]=true}for(letj=1;j<len;j++){for(leti=0;i<j;i++){if(s[i]!==s[j]){dp[i][j]=false}else{if(j-i<3){dp[i][j]=true}else{dp[i][j]=dp[i+1][j-1]}}if(dp[i][j]&&j-i+1>maxLength){maxLength=j-i+1begin=i}}}returns.substring(begin,begin+maxLength)};