題目描述
解題思路
- 将字元串的長度分為奇數和偶數的情況。
- 奇數的情況,傳入的是兩個相同的下标,偶數的情況傳入的是i和i+1。
- 如果m大于等于0,n小于len,并且這兩個字元是相等的,則一個左移,一個右移。
- 移動完畢之後,判斷是否更新最終的結果,隻要比最終結果長,就更新最終結果。
AC代碼
var longestPalindrome = function(s) {
// 擷取字元串的長度
let len = s.length;
// 定義最終傳回的結果
let result = '';
// 循環周遊每一個字元并更新最終的結果
for (let i = 0; i < len; i++) {
// 奇數的情況
getResult(i,i);
// 偶數的情況
getResult(i,i+1);
}
function getResult(m,n) {
while(m >= 0 && n < len && s[m] === s[n]) {
m--;
n++;
}
// 判斷是否更新最終的結果,隻要比最終結果長,就更新為最終結果
if (n - m -1 > result.length) {
result = s.slice(m+1,n);
}
}
return result;
};
複制代碼
題目反思
- 學會中心拓展法這個思路。
- 熟練記憶slice這個API的用法。