最长回文子串问题
2015-04-14 23:08
267 查看
首先想到一种很快速的方法求回文子串,就是枚举一下子串的中间位置,然后向两边扩展比较!但是这时候会出现一个问题那就是当这个串本身是一个重复串只有一个字符的时候那这个算法就是一个n^2的算法,但是这个算法本身对于其他数据是很有价值的,所以只需要对这种重复的串的问题可以单独进行一下处理就可以很快的完成求解
#include <cstdio> #include <iostream> using namespace std; char a[1000010]; int fun(){ int ans = 0; for(int i = 1;a[i];i++){ int t; int s = i,e = i; while(a[e+1] == a[s]) e++;//这里就是对重复串的计算,每次当遇到重复串的时候就可以将i直接跳转到最后那么位置,因为这一段是重复的,所以就回文 串的中心位置只会出现在这个子串的中间位置 i = e; while(a[s-1] == a[e+1]) s--,e++;两边扩展 t = e -s +1; if(t > ans) ans = t; } printf("%d\n",ans); } int main(){ a[0] = '@'; int n; cin >> n; for(int i = 0;i < n;i++){ scanf("%s",a+1); fun(); } return 0; }
相关文章推荐
- 算法的经典问题,求最长回文子串,最长重复字串
- 最长回文子串(Longest Palindromic Substring)-DP问题
- 最长回文子串问题
- 最长回文子串算法(字符串处理问题+多种方法解决)【转载】
- 最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理
- 最长回文子串问题
- python解决最长回文子串问题
- 重复子串问题(五):求最长回文字符子串
- Leetcode516.+Leetcode96. DP问题之求解最长回文子串+BST数目
- 最长回文子串问题
- 最长回文子串问题
- [LeetCode系列] 最长回文子串问题
- 最长回文子串(Manacher算法模板题)&&对称字符串问题
- 最长回文子串问题
- 最长公共子串(子序列)、最长递增子序列、最长回文子串等问题
- hdu3068 最长回文子串问题.
- 【 Javascript刷LeetCode系列】5. Longest Palindromic Substring 最长回文子串问题
- Manacher算法解决最长回文子串问题---O(n)时间复杂度
- java 实现后缀数组及最长回文子串问题
- Manacher算法(最长回文子串问题)