- Published on
Leetcode - Palindrome | 中心扩展法 | 最长回文子串
- Authors
- Name
- Shelton Ma
5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串.回文字符串(Palindrome)是指正着读和反着读都一样的字符串.
常用思路 中心扩展法(经典简单好理解)
- 枚举每一个字符为中心,向两边扩展检查是否为回文
- 注意要处理奇数回文(中心1个字符)和偶数回文(中心2个字符)
实现
// abcdacd function longestPalindrome(s) { if (s.length < 2) return s; let start = 0, maxLen = 1; function expandAroundCenter(left, right) { while (left >= 0 && right < s.length && s[left] === s[right]) { if (right - left + 1 > maxLen) { maxLen = right - left + 1; start = left; } left--; right++; } } for (let i = 0; i < s.length; i++) { expandAroundCenter(i, i); // 奇数长度 expandAroundCenter(i, i + 1); // 偶数长度 } return s.substring(start, start + maxLen); }