题目
解题1:暴力-杂糅-烂
哈哈哈哈,写了半天才解决,理了一个思路,本来觉得很简单,结果老有地方没考虑到,改来改去改出来了。
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let r = '';
let t = '';
for (let i = 0;i<s.length; i++) {
let j = 1;
r = s[i];
t = t.length == 0 ? s[i]: t;
while (i-j>=0 && i+j<=s.length-1) {
if (i-j>=0 && i+j<=s.length && s[i-j] == s[i+j]) {
r = s[i-j] + r + s[i+j];
j = j+1;
if (r.length > t.length) {
t = r;
}
} else {
r = ''
break;
}
}
j = 0;
r = '';
while (i - j>=0 && i + j <s.length-1) {
if (s[i-j] == s[i+j +1]) {
r =s[i-j]+ r + s[i+j+1];
j = j+1;
if (r.length > t.length) {
t = r;
}
} else {
r = '';
break;
}
}
}
return t;
};
- 上述方法核心思想在于两个搜索。
- 一个奇数长度回文串,以当前为中心,向两边搜索。
- 另一个是偶数长度回文串,以当前以及下一个为一对组合,分别向两边搜索。
- 这个代码太混乱了,后面再改。