给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
难过,一天20到题目的目标才完成了1/4,这题真的好难刷。
class Solution { //我记得这个应该是很常规的一道题目了,除了穷尽还有什么好的方法吗? //问题的关键是如何记忆曾经的回文子串的一个结构,这个需要记忆吗? //这题居然还是中等程度的动态规划的题目,感觉对动态规划真的非常的不熟悉。 //动态规划一般这种无起点的都要用二维的动态规划来做了,我还是对一纬的动态规划比较熟悉。 //这里之所以满足二维的动态规划是因为回文字符串的结构,去掉开头和结尾之后依然是回文字符串,因此如果用d(i,j)表示i和j之间的字符串是否为回文字符串,我们应该看d(i+1,j-1)是不是以及s.charAt(i)是否等于s.charAt(j)。当然动态规划一定要有开始值录入才能正常启动转移,这么启动就是d(i,i)和d(i,j+1)这个对角线元素是很容易确定是不是回文字符串的。同时在遍历求解的时候我们是按照回文子串的长度来求解的。 public String