Skip to main content

Pattern 9: Palindrome DP

The Symmetry Pattern: Detect, partition, or transform strings based on palindrome properties. Expand around center or use interval DP.


The Core Pattern

THE MENTAL MODEL

Imagine checking if a word reads the same forwards and backwards:

  1. Palindromes are symmetric - same from both ends
  2. Two approaches: expand from center or interval DP
  3. For substring [i...j]: it's a palindrome if s[i] == s[j] AND [i+1...j-1] is palindrome
  4. Build from small intervals (length 1, 2) to large intervals
  5. Useful for partitioning, counting, or finding longest palindromes

This is Palindrome DP.

Pattern Recognition

WHEN YOU SEE THIS PATTERN

Keywords: "palindrome", "symmetric", "partition", "palindromic substring"

Structure:

  • String/sequence with symmetry property
  • Need to check or count palindromes
  • Often involves interval/range state

State:

  • dp[i][j] = "is substring [i...j] a palindrome?"
  • OR dp[i] = "min cuts to partition s[0...i] into palindromes"

Transitions:

  • Check endpoints: s[i] == s[j]
  • Use smaller interval: dp[i+1][j-1]

Common Problems

  • Longest Palindromic Substring
  • Palindromic Substrings (Count)
  • Longest Palindromic Subsequence
  • Palindrome Partitioning
  • Palindrome Partitioning II (Min Cuts)

(Example problems will be added here)