最长回文(倒过来一样)子串(连续)
2015-06-05 14:21
211 查看
#include <iostream> using namespace std; #define N 1000 bool f ; //f[i][j]表示[i,j]是否是回文子串 string longestPalindrome(string s) { int n = s.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { f[i][j] = false; } } int maxLen = 1, start = 0; //子串长度,起点 for (int i = 0; i < n; i++) { f[i][i] = true; //单个字符是回文子串 for (int j = 0; j < i; j++) //[j,i]是不是回文子串 { f[j][i] = (s[j] == s[i] && (i-j < 2 || f[j+1][i-1])); if (f[j][i] && maxLen < (i - j + 1)) //i-j+1是[j,i]的长度 { maxLen = i - j + 1; start = j; } } } return s.substr(start, maxLen); } int main() { string s = "aaabcdcbabcdaa"; cout << longestPalindrome(s).c_str() << endl; return 0 ; }
相关文章推荐
- c 根据libxml库解析xml文件
- UITableView简述
- squid性能指标查看
- Failed executing 'cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_38\jre\..\bin\jarsigner.exe"
- C++中虚析构函数的作用
- GDB 单步调试
- phpMyAdmin安装
- appium简明教程(7)——Desired Capabilities详解
- 关于 wait_event_interruptible() 和 wake_up()的使用
- IOS判断手机型号
- Web容器自动对HTTP请求中参数进行URLDecode处理
- CSS-正方体
- oracle中如何判断一个字符串是否含有汉字
- 慎用异常(Exception)
- 一些有用的外网文章链接
- Linux查看内存大小和插槽
- Activity的生命周期
- 第一讲 什么是机器学习
- Apache Drill 框架探究
- appium简明教程(6)——启动appium及android模拟器