题目描述
解题思路
- 将字符串的长度分为奇数和偶数的情况。
- 奇数的情况,传入的是两个相同的下标,偶数的情况传入的是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的用法。