5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = “babad”
输出:”bab”
解释:”aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:”bb”
1 | var longestPalindrome = function(s) { |
解析
1、先创建一个
s长度的二位数组,并填充为false(dp[i][j]代表的是i~j是否为回文字符串)2、从
s字符串的尾部开始遍历
dp[i][j]为回文字符串有三种情况(前提s[i] === s[j])
j - i === 0代表一个字符,一个字符肯定是回文字符串
j - i < 2代表两个字符(包括第一种情况),两个字符且s[i] === s[j]那么一定是回文字符串
j - i > 2代表两个字符以上且s[i] === s[j],那么如果s[i+1] ~ s[j-1]是回文,也就是dp[i+1][j-1]为true
比如:abba,i=0,j=3,s[i] === s[j],s[i+1] ~ s[j-1]也就是bb,也是一个回文字符串,所以abba也是一个回文字符串
