var longestPalindrome = function(s) {
//如果长度为一的话直接返回
if(s.length === 1) return s;
let maxStr = s.charAt(0); //用于保存当前找出的最长回文字符串
let nowStr = ''; //保存当前截取的字符子串
let isPalindrome = true; //用于标识当前截取的字符子串是否是回文字符串
//根据截取的长度从大到小进行循环,从大到小循环有利于根据条件减小循环次数
for(let i = s.length; i>=1;i--){
if(i<maxStr.length){
//如果当前截取的字符串的长度小于当前找到的最长回文字符串的长度则结束该次循环
continue;
}
for(let j=0; j<=s.length-i; j++){
//确定截取的字串的长度,根据截取的起始位置进行循环截取子串
nowStr = s.substring(j,j+i);
//判断当前截取的字符子串是不是回文字符串
for(let k=0; k<Math.floor(nowStr.length/2); k++){
if(nowStr.charAt(k) !== nowStr.charAt(nowStr.length-k-1)){
isPalindrome = false;
break;
}
}
if(isPalindrome&&maxStr.length<nowStr.length){
//如果是回文字符串且长度大于前一次所找到的回文字符串则更新
maxStr = nowStr;
}
//更新标识
isPalindrome = true;
}
}
return maxStr;
};
力扣-求最长回文子串
于 2023-03-19 11:44:46 首次发布