1.动态规划
代码
问题:dp[i][j] :是否为回文串(以i 开头,以j结尾)
最优子:dp[i][j]=dp[i+1][j-1]
若开头和结尾元素相等,并且中间也是回文,那么dp[i][j]也是回文
记录长度:ans;
记录开头:ret;
遍历顺序:用长度遍历,(长度1一直到数组长,)!!!!
因长度大于1后,需要长度比它小的dp信息,所以用长度遍历,
2.马拉车??
(真6,看了几个小时)
步骤:1初始化,避免讨论偶数和奇数问题(直接创了个新数组,有点浪费空间,待解决)
2.从第一个字符开始遍历,若字符在前一个回文串的范围内,那么它的长度等于与回文串中心对称的那个元素的回文长度(注意比较长度范围是否超过right,),若不是,则重新延展遍历,
3.更新回文中心mid和最右边right
PS:p[i]-1为原字符串回文长度(已经减去添加的字符)