最长回文子串
来源:互联网 发布:python和大数据挖掘 编辑:程序博客网 时间:2024/06/06 00:21
str="abcdddddddddcf",则最长回文子串为"cdddddddddc"。
方法一:
先将字符串反转,得到str2,再寻找str1与str2的最大公共子串。
最大公共子串参考:
两个字符串的最大公共子序列和最大公共子串
方法二:
用动态规划做,
DP[i][j]表示str[i...j]形成的最长回文子串的长度。
#include<iostream>#include <vector>#include <assert.h>#include <string>using namespace std;vector<char> MaxSubStr(const char *str){int size = strlen(str);vector<vector<int>> DP(size, vector<int>(size, 0));int begin=0, end=0;int max = 1;for (int i = 0; i < size - 1; i++) DP[i][i] = 1;for (int i = 0; i < size - 1; i++){if (str[i] == str[i + 1]) DP[i][i + 1] = 2;}for (int len = 3; len <= size; len++)for (int i = 0; i <= size - len; i++){if (str[i] == str[i + len - 1]) DP[i][i + len - 1] = DP[i + 1][i + len - 2] + 2;else DP[i][i + len - 1] = 0;if (DP[i][i + len - 1] > max){max = DP[i][i + len - 1];begin = i;end = i + len - 1;}}vector<char> result(str + begin, str + end + 1);return result;}int main(void){vector<char> re = MaxSubStr("abababababa");for (int i = 0; i < re.size(); i++)cout << re[i];cout << endl;return(0);}
0 0
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 开发错误手册
- showModalDialog功能笔记
- 锋利的jQuery 学习笔记-第一章 认识JQuery
- IOS中的多线程
- WebView使用中的那些坑之软键盘遮挡输入框
- 最长回文子串
- 不带头结点的单链表操作
- MongoDB数据查询
- ImageLoader内存缓存解析
- 文件上传
- windows2008,ftp安装与实现
- 关于动态顺序表的所有操作代码
- POJ 3249 Test for Job(拓扑排序+dp)
- js obj.push()js向数组对象最后添加一个新元素,并返回新的数组长度