最长回文子串
来源:互联网 发布:2018开淘宝店挣钱吗 编辑:程序博客网 时间:2024/06/12 22:11
2、动态规划
回文字符串的子串也是回文,比如P[i,j](表示以i开始以j结束的子串)是回文字符串,那么P[i+1,j-1]也是回文字符串。这样最长回文子串就能分解成一系列子问题了。这样需要额外的空间O(N^2),算法复杂度也是O(N^2)。
首先定义状态方程和转移方程:
P[i,j]=0表示子串[i,j]不是回文串。P[i,j]=1表示子串[i,j]是回文串。
P[i,i]=1
if(s[i]==s[j])
P[i,j]=P[i+1,j-1];
if(s[i]!=s[j])
P[i,j]=0;
string findLongestPalindrome(string &s){ const int length=s.size(); int maxlength=0; int start; bool P[50][50]={false}; for(int i=0;i<length;i++)//初始化准备 { P[i][i]=true; if(i<length-1&&s.at(i)==s.at(i+1)) { P[i][i+1]=true; start=i; maxlength=2; } } for(int len=3;len<length;len++)//子串长度 for(int i=0;i<=length-len;i++)//子串起始地址 { int j=i+len-1;//子串结束地址 if(P[i+1][j-1]&&s.at(i)==s.at(j)) { P[i][j]=true; maxlength=len; start=i; } } if(maxlength>=2) return s.substr(start,maxlength); return NULL;}
阅读全文
0 0
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 各种分布式文件系统比较
- ionic2项目实现项目打包
- SQL Server 2017 SELECT…INTO 创建的新表指定到文件组
- linux中“弹出界面eth0:设备似乎不存在”的问题
- HttpClient请求和HttpURLConnect请求数据
- 最长回文子串
- AT学习报告一 软件的初步使用
- HttpURLConnection获取网络数据(实例:网路请求图片)
- 【面向JS--Date对象】
- mui之上拉刷新和mui-content结合解决ios上拉不回弹的bug
- 写给自己的话
- 堆排序
- hdu1224 Free DIY Tour【动态规划】
- centos 6.5使用 360WiFi2 无线模块