题目
给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
思路
经典的动态规划题目,我们可以这样来递推,假设s[i] -> s[j]
是回文子串,那么s[i+1] -> s[j-1]
一定是回文子串,我们用一个二维dp
数组dp[i][j]
,表示i -> j
是否是一个回文子串,通过这个我们可以列出状态转移方程,
d p [ i ] [ j ] = { 0 , s [ i ] ≠ s [ j ] d p [ i + 1 ] [ j − 1 ] , s [ i ] = s [ j ]