[LeetCode] 5. 最长回文子串 (Longest Palindromic Substring)
题目描述
给定一个字符串 s,找到 s 中最长的回文子串。
解题思路
方法一:中心扩展法
以每个字符(或两个字符的间隙)为中心向两边扩展,检查是否构成回文。
- 时间复杂度: O(n^2)
- 空间复杂度: O(1)
方法二:动态规划
定义 dp[i][j] 表示 s[i..j] 是否为回文。状态转移方程:dp[i][j] = (s[i] == s[j]) && dp[i+1][j-1]。
- 时间复杂度: O(n^2)
- 空间复杂度: O(n^2)
代码实现
1 | class Solution: |
总结
回文问题的经典解法有两种:中心扩展和动态规划。中心扩展法空间更优,推荐优先使用。