题目
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例2:
输入: “cbbd”
输出: “bb”
解题
方法1(动态规划):
这题的动态规划法就一个核心思想,保证s[i]===s[j]的同时,保证s[i+1]=s[j-1],这种算法时间复杂度是O(n^2),代码:
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
const len = s.length;
if (len <= 1) {
return s;
}
let maxLength = 1;
let maxStr = s.substring(0, 1); // 将最小值设置为1,最小字符串设置为第一个字符
const p = [];
for (let i = 0; i < len; i++) {
p[i] = new Array(len);
}
for (let r = 1; r < len; r++) {
for (let l = 0; l < r; l++) {
if (s[l] === s[r] && (r -</