5. Longest Palindromic Substring
来源:互联网 发布:dns使用的端口号为 编辑:程序博客网 时间:2024/06/15 12:01
这个题的意思是,给出一个字符串s,返回他的最长回文子串(连续的)。
做过回文子串相关的动态规划的题目,所以很自然想到了动态规划。我的代码:
class Solution {public: string longestPalindrome(string s) { int res = 0; int n = s.size(); int idxx = 0, idxy = 0; vector<vector<int>> p(n, vector<int>(n, 1)); for(int i = 0; i < n; ++i) { p[i][i] = 1; } for(int i = 0; i < n; ++i){ for(int j = i-1; j >= 0; --j){ if(s[j] == s[i] && (i > j && p[j+1][i-1] == 1)){ p[j][i] = 1; if(i - j + 1 > res){ idxx = j; idxy = i; res = i-j+1; } }else{ p[j][i] = 0; } } } return s.substr(idxx, idxy - idxx + 1); }};看到大神写的更简短的代码,方法一样:
class Solution {public: string longestPalindrome(string s) { int dp[s.size()][s.size()] = {0}, left = 0, right = 0, len = 0; for (int i = 0; i < s.size(); ++i) { for (int j = 0; j < i; ++j) { dp[j][i] = (s[i] == s[j] && (i - j < 2 || dp[j + 1][i - 1])); if (dp[j][i] && len < i - j + 1) { len = i - j + 1; left = j; right = i; } } dp[i][i] = 1; } return s.substr(left, right - left + 1); }};大神还提到一种马拉车算法:http://www.cnblogs.com/grandyang/p/4475985.html
阅读全文
0 0
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 每天一道LeetCode-----合并两个/多个有序链表为一个新链表
- mybatis关联查询结果集
- 请关注我的英文主页!
- 如何快速转载CSDN中的博客
- STM32的SPI使用注意
- 5. Longest Palindromic Substring
- Unity lightmap shader
- Codeforces Round #402 (Div. 2) D. String Game
- 小小购物车
- Oracle数据库三种标准的备份方法
- 欢迎使用CSDN-markdown编辑器
- 偏差与方差,欠拟合与过拟合
- 表格元素
- 如何使用bat脚本运行jar包