共计 794 个字符,预计需要花费 2 分钟才能阅读完成。
思路 :遍历字符串,对于字符串的每个字符,维持两个游标(left
,right
),找到游标对应字符相等时就同速度向两边扩散。
对于 奇数长度子串,left
= right
对于偶数成都子串,left
= right
– 1
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let res = '';
for(let i = 0; i< s.length; i++){
// 奇数
let left = i, right = i;
while(left >= 0 && right < s.length && s[left]==s[right]) {
left--;
right++;
}
if(res.length < right - left -1){res = s.substring(left + 1, right);
}
// 偶数
left = i, right = i+1;
while(left >= 0 && right < s.length && s[left]==s[right]) {
left--;
right++;
}
if(res.length < right - left -1){res = s.substring(left + 1, right);
}
}
return res;
};
为了看起来更不便能够简略的封装一下
var longestPalindrome = function(s) {
let res = '';
for(let i = 0; i< s.length; i++){find(i, i);
find(i, i+1);
}
function find(left, right){while(left >= 0 && right < s.length && s[left]==s[right]) {
left--;
right++;
}
if(res.length < right - left -1){res = s.substring(left + 1, right);
}
}
return res;
};
不过性能有些损耗
正文完
发表至: javascript
2023-04-26