回文即对称的字符串,如aba abccba
问:给一个字符串,返回最长回文子串
对称轴的话就是中心,所以可以用“中心扩散法”,也就是我们常说的“动态规划”。(注:要区分奇数偶数)
/**
* @param {string} s
* @return {string}
*/
var getLongestHuiwen = function(s) {
if (s.length === 1) return s
let max = ''
for (let i = 0; i < s.length-1; i++) {
let odd = centerSpread(s, i, i)
let even = centerSpread(s, i, i+1)
if (odd.length > even.length) {
if (odd.length > max.length) {
max = odd
}
} else {
if (even.length > max.length) {
max = even
}
}
}
return max
};
function centerSpread(s, left, right) {
let max = ''
while(left >= 0 && right < s.length) {
if (s.charAt(left) === s.charAt(right)) {
left--
right++
} else {
break
}
}
left++
right--
max = s.slice(left, right + 1)
// console.log(max, left)
return max
}