回文串:就是正向过去和反向过去都是同一个意思,abba,aba,大波美人鱼人美波大→_→
这题没有做出来,不太懂里面的动态规划,看了解答学会了用双子针来进行。
双子针法
主要是遍历字符串,然后用i和i+1来进行查找分别向字符串的两端进行查找l>=0 && r<s.length && s[l]===s[r] 不等的时候则跳出while循环,然后截取两者之间的长度就是回文串,再根据回文串来进行判断长度,拿到最长回文子串
var longestPalindrome = function (s) {
let res = "";
for (let i = 0; i < s.length; i++) {
const s1 = palindrome(s, i, i);
const s2 = palindrome(s, i, i + 1);
res = res.length > s1.length ? res : s1;
res = res.length > s2.length ? res : s2;
}
return res;
};
function palindrome (s, l, r) {
while (l >= 0 && r < s.length && s[l] === s[r]) {
l--;
r++;
}
return s.substr(l + 1, r - l - 1)
};