Article start
DSA Course: Interview Patterns and Problem Solving
Module 2: Strings

Longest Palindromic Substring: Expand around center Pattern

Expand from each possible center to find the longest contiguous palindrome.

May 28, 2026·36

Learning Outcome

After this lesson, you should be able to use the symmetry of palindromes and expand from centers instead of generating every substring.

Problem Statement

Given a string s, return the longest palindromic substring in s. The substring must be contiguous.

InputOutputWhy
"babad""bab" or "aba"Both are valid longest palindromic substrings.
"cbbd""bb"The even-length center is between the two b characters.

Brute Force Approach

Generate every substring and check whether it is a palindrome. Keep the longest valid one.

This is very direct, but checking many substrings and validating each one can reach O(n^3).

Optimized Approach

Every palindrome has a center. For each index, expand once for odd-length palindromes and once for even-length palindromes. Track the best range found.

Exact Pseudocode

bestStart = 0
bestLength = 1
expand(left, right):
  while left >= 0 and right < length(s) and s[left] == s[right]:
    update best range if right - left + 1 is larger
    left = left - 1
    right = right + 1
for center from 0 to length(s) - 1:
  expand(center, center)
  expand(center, center + 1)
return substring(bestStart, bestLength)

Reference Code

class Solution:
    def longestPalindrome(self, s):
        if not s:
            return ""

        best_start = 0
        best_len = 1

        def expand(left, right):
            nonlocal best_start, best_len
            while left >= 0 and right < len(s) and s[left] == s[right]:
                length = right - left + 1
                if length > best_len:
                    best_start = left
                    best_len = length
                left -= 1
                right += 1

        for center in range(len(s)):
            expand(center, center)
            expand(center, center + 1)

        return s[best_start:best_start + best_len]

Sample Dry Run

CenterExpansionBest
b at index 0bb
a at index 1babbab
b at index 2ababab or aba
Other centersNo longer palindromeLength 3 remains best

Complexity

MeasureValueReason
TimeO(n^2)There are O(n) centers and each expansion can scan outward.
SpaceO(1)Only best range variables are stored.

Edge Cases

  • Empty string if platform allows it.
  • Single-character string.
  • Even-length palindrome such as "bb".

Interview Checklist

  • Handle both odd and even centers.
  • Track indices, not only the substring.
  • Return any valid longest palindrome if multiple exist.

FAQs

Why expand around centers?

Because palindromes are symmetric, so a center fully determines how far the palindrome can grow.

Why check even centers?

Palindromes like "bb" have a center between two characters.

What is the core pattern?

Expand around center.

Discussion

0 comments

Sign in to share a question or add to the discussion.
Start the discussion

Ask a question or share what stood out to you.