Find the longest palindromic substring by expanding around centers.
Problem Statement
Examples
Input: s = "babad"
Output: "bab"
Explanation: Combining the input according to Longest Palindromic Substring logic yields "bab".
Input: s = "cbbd"
Output: "bb"
Explanation: Combining the input according to Longest Palindromic Substring logic yields "bb".
Complexity
Time Complexity: O(N²)
Space Complexity: O(1)
Hints
Editorial & Approach
Problem Overview & Intuition
Every palindrome expands outward symmetrically from a center. A string has N single-character centers (for odd palindromes) and N - 1 between-character centers (for even palindromes). Expanding from all 2N - 1 centers runs in O(N²) time and O(1) space.
Step-by-Step Approach
- If
s.length <= 1, returns. - Initialize
start = 0, maxLen = 1. - Iterate
ifrom0tos.length - 1: - Expand around
(i, i)for odd-length palindromes. - Expand around
(i, i + 1)for even-length palindromes. - Return
s.substring(start, start + maxLen).
Optimal Implementation (JavaScript)
function longestPalindrome(s) {
if (!s || s.length < 2) return s;
let start = 0, maxLen = 1;
function expand(l, r) {
while (l >= 0 && r < s.length && s[l] === s[r]) {
if (r - l + 1 > maxLen) { start = l; maxLen = r - l + 1; }
l--; r++;
}
}
for (let i = 0; i < s.length; i++) {
expand(i, i);
expand(i, i + 1);
}
return s.substring(start, start + maxLen);
}
Complexity Analysis
Edge Cases & Corner Traps Handled
- Single character string: returns that character.
- Entire string is palindrome: returns entire string.
- All distinct characters: returns any single character (length 1).