题目
给你一个字符串 s,找到 s 中最长的回文子串。
** 案例1:**
1 | 输入:s = "babad" |
** 案例2:**
1 | 输入:s = "cbbd" |
** 案例3:**
1 | 输入:s = "a" |
** 案例4:**
1 | 输入:s = "ac" |
提示:
- 1 <= s.length <= 1000
- s 仅由数字和英文字母(大写和/或小写)组成
解法1
首先我们要理解什么是回文子串,即左右对称的为回文子串。我们在寻找子串的时候只能通过两个循环去寻找子串,于是我们可以先确定右边界,依次右移来获取子串。
我们通过边界右移寻找子串比较他们的子串是否相同,如果不同则存到dp[][]
的二维数组里面,可以下次使用,这是动态规划的思想,空间置换时间。具体解法代码如下:
1 | class Solution { |
解法2
1 | class Solution { |