最长回文子串 相关资料:
1、暴力法
2、动态规划
3、中心扩展
4、Manacher法 http://blog.csdn.net/ywhorizen/article/details/6629268
http://blog.csdn.net/kangroger/article/details/37742639
在看后缀数组的时候碰到的这道题目
不过没用后缀数组写出来= = 用了一个很暴力的做法卡进了1 s
Source Code:
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h> #include <iostream> #include <string> #include <algorithm> using namespace std; string a, res, tmp1, tmp2; int ans; int main(){ int i, j, k, t, n, m; while(cin >> a){ ans = 1; int len = a.size(); bool flag = false; for(i = 0; i < len; ++i){ if(len - i < ans) break; for(j = len - i; j >= 1; --j){ tmp1 = a.substr(i, j); tmp2 = tmp1; reverse(tmp1.begin(), tmp1.end());a if(!flag){ if(tmp1.compare(tmp2) == 0 && j >= ans){ flag = true; res = tmp1; ans = j; break; } } else{ if(tmp1.compare(tmp2) == 0 && j > ans){ flag = true; res = tmp1; ans = j; break; } } } } cout << res << endl; } return 0; }
531 ms 是可以过= = 不过大家用后缀数组都是15MS 过的,有点不好意思啊
时间: 2024-10-09 18:52:09