给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
动态规划问题一般具有、
1.最有子结构的性质:该问题的最优解的子解是子问题的最优解。(方便已知推未知);
2.无后效性:当前状态一旦确定,则此后的过程就只与这个状态的值有关,而与怎么到达这个状态无关。
动态规划可以分为以下4部分解决:
1。划分状态,就是找出合适的子问题(与原问题相似但规模更小)。例如上边的例子要找回文串,则我们可以看看回文串的特点,找出回文串的子串与回文串的关系。
2.状态表示。即如何让计算机理解子问题。上边的例子中我们可以使用一个boolea的二维数组标记目前为止所有回文串的下标。
3.确定一些初始状态的值(很容易就能确定的状态的值,比如上例中只有一个字母一点是回文串,两个字母的也比较好求),用已知推算未知。
4.状态转移(已知推未知):可以用状态转移方程表示。
因为如果x是一个回文串,则其中间的串必定是回文串