题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
function getLongestPalindrome( A ) {
// 首先判断A的长度, 若A长度小于等于0 返回0
if(A.length <= 0){
return 0
}
let max_length = 1; //非空字符串的回文子串长度至少为1
for(let i = 0; i < A.length; i++){
// 如果回文长度为奇数
const k1 = ExpandPalindrome(A, i - 1, i + 1);
// 如果回文长度为偶数
const k2 = ExpandPalindrome(A, i, i + 1);
const len1 = k1 * 2 + 1;
const len2 = k2 * 2;
max_length = Math.max(len1, len2,max_length)
}
return max_length;
}
function ExpandPalindrome(s,left, right){
let k = 0;
const n = s.length;
while(left >= 0 && right < n){
if(s[left] === s[right]){
left--;
right++;
k++;
}else{
break;
}
}
return k;
}
module.exports = {
getLongestPalindrome : getLongestPalindrome
};
要点:
- 判断是否为回文
- 字符长度为奇偶判断方式略有不同
