【问题】给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 :
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 :
输入: "cbbd"
输出: "bb"

【思路】前两天我们讲解了"中心拓展法"来解这道题目,今天我们使用动态规划的方法来写这道题目,首先我们要寻找一个递推式如下:

我们将f[i][j]表述为从j到i的子串为回文串,j <= i,此时dp的矩阵为左下三角!
如果a[i]==a[j]且f[i-1][j+1]=true, 那么f[i][j]也为true。

需要注意一点:当i-j < 2时,如果s[i]=s[j],那么f[i][j]必为true,即单个字符或者两个相邻相同字符为回文子串。

class Solution {
public:
string longestPalindrome(string s) {
int slen = s.length();
if(slen == ) return "";
string res = "";
vector<vector<bool>> f(slen, vector<bool>(slen, false));
int maxlen = ;
int curlen = ; for(int i = ;i < slen; i++){
for(int j = ;j <= i; j++){ // f[0][0]=true, 一定成立
if((s[i] == s[j]) && ((i-j < ) || (i > && f[i-][j+]))){
f[i][j] = true;
curlen = i - j + ;
if(curlen > maxlen){
maxlen = curlen;
res = s.substr(j, curlen);
}
}
}
}
return res;
}
};

【LeetCode】最长回文子串-动态规划法的更多相关文章

  1. leetcode -- 最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  2. [LeetCode]最长回文子串 java

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  3. LeetCode.5-最长回文子串(Longest Palindromic Substring)

    这是悦乐书的第342次更新,第366篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第3题(顺位题号是5).给定一个字符串s,找到s中最长的回文子字符串. 您可以假设s ...

  4. LeetCode最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: & ...

  5. [LeetCode] 5. 最长回文子串 ☆☆☆(最长子串、动态规划)

    最长回文子串 (动态规划法.中心扩展算法) https://leetcode-cn.com/problems/longest-palindromic-substring/solution/xiang- ...

  6. LeetCode随缘刷题之最长回文子串

    这一题我用的相对比较笨的方法. 相对于大佬们用的动态规划法,比较复杂.但却更容易理解,我主要是通过记录下标来确定最长回文串的. package leetcode.day_12_06; /** * 给你 ...

  7. 求最长回文子串 - leetcode 5. Longest Palindromic Substring

    写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...

  8. LeetCode之“字符串”:最长回文子串

    题目要求: 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串.例如,给出字符串 "abcdzdcab",它的最长回文子串为 & ...

  9. LeetCode(5):最长回文子串

    Medium! 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 长度最长为1000. 示例: 输入: "babad" 输出: "bab&quo ...

随机推荐

  1. struts2--验证器

    1.输入验证: --struts2提供了一些基于Xwork Validation Framework的内建验证程序,使用这些验证程序不需要变编程,只要在一个XML文件里进行声明,声明的内容如下: &g ...

  2. day06-Python运维开发基础(字符串格式化与相关的函数、列表相关的操作)

    1. 字符串相关的操作与格式化 # ### 字符串相关操作 # (1)字符串的拼接 + var1 = "亲爱的," var2 = "男孩" res = var1 ...

  3. 该虚拟机似乎正在使用中 如果该虚拟机未在使用请按获取所权T按钮获取他的所有权,否则,请按取消按钮以防损坏

    虚拟机出现如下情况 不能够正常过使用,解决办法如下:直接进入上图中配置文件的目录下,然后删除所有的lck结尾的文件夹,然后重新启动, 然后file打开这个文件即可.重新进入虚拟机开机.

  4. 【pwnable.tw】 starbound

    此题的代码量很大,看了一整天的逻辑代码,没发现什么问题... 整个函数的逻辑主要是红框中两个指针的循环赋值和调用,其中第一个指针是主功能函数,第二个数组是子功能函数. 函数的漏洞主要在main函数中, ...

  5. iOS 安全地在主线程执行一个Block

    //主线程同步队列 #define dispatch_main_sync_safe(block)\ if ([NSThread isMainThread]) {\ block();\ } else { ...

  6. DB2的常用指令

    注:大写的是固定的,小写的根据自己的实际情况 首先进入 命令窗口, win+r ---> 输入 db2cmd db2 1. 删除数据库 UNCATALOG DB db_name --db_nam ...

  7. java实现下划线转驼峰

    废话少说,直接上代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Temp { publi ...

  8. 7.8 Varnish Log

  9. python 文件夹递归

    import ospath = "F:/new" #文件夹目录datas = []def eachFile(filepath): fileNames = os.listdir(fi ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-plus

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...