Longest Palindromic Substring
An interactive, step-by-step visualisation of Longest Palindromic Substring.
- Category
- Dynamic Programming
- Time complexity
- O(n²)
- Space complexity
- O(n²)
Pseudocode
dp[i][i] = true dp[i][i+1] = (s[i]==s[i+1]) dp[i][j] = s[i]==s[j] and dp[i+1][j-1] track the longest true span
Reference implementation
def longest_pal_substring(s):
n = len(s); dp = [[False]*n for _ in range(n)]
best = (0, 1)
for i in range(n): dp[i][i] = True
for length in range(2, n+1):
for i in range(n - length + 1):
j = i + length - 1
if s[i]==s[j] and (length<=2 or dp[i+1][j-1]):
dp[i][j] = True; best = (i, length)
i, length = best
return s[i:i+length]
Open the interactive Longest Palindromic Substring visualisation →