最长回文子串 V2(Manacher算法)
来源:互联网 发布:淘宝休闲斜挎包 编辑:程序博客网 时间:2024/06/01 18:45
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。
输入一个字符串Str,输出Str里最长回文子串的长度。
Input
输入Str(Str的长度 <= 100000)
Output
输出最长回文子串的长度L。
Input示例
daabaac
Output示例
5
#include <iostream>#include <vector>#include <algorithm>#include <string.h>using namespace std;int fun(string &str){string temp;int len = str.length();temp += '@';for (int i = 0; i < len; i++){temp += '#';temp += str[i];}temp += '#';temp += '&';int size = len*2 + 1;int pos = 0;int right = 0;int result = 0;int buf[size];for (int i = 1; i < size; i++){if (i < right){buf[i] = min(buf[2*pos-i], right-i);}else{buf[i] = 1;}while (temp[i-buf[i]] == temp[i+buf[i]]){buf[i]++;}if (i+buf[i] > right){pos = i;right = i+buf[i];}result = max(result, buf[i]);}return result-1;}int main(){string str;cin >> str;cout << fun(str) << endl; return 0;}
阅读全文
0 0
- 51nod1089 最长回文子串 V2(Manacher算法)
- 51nod 最长回文子串 V2(Manacher算法)
- 51nod_1089 最长回文子串 V2(Manacher算法)
- 最长回文子串 V2(Manacher算法)
- 最长回文子串 V2(Manacher算法)
- Manacher算法(最长子回文串)
- 最长回文子串(Manacher算法)
- 最长回文子串(Manacher算法)
- 51nod 1089 最长回文子串 V2 (Manacher算法)
- 51nod-【1089 最长回文子串 V2(Manacher算法)】
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 【51nod】1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 51nod--1089 最长回文子串V2(Manacher 算法)
- 51nod1089---最长回文子串 V2(51nod基础:Manacher算法)
- 51Nod 1089 最长回文子串 V2(Manacher算法)
- 51nod 1089 最长回文子串 V2(Manacher算法)
- 从适应区到习惯,再到能力
- USACO-Section1.2 Combination Lock
- 二分
- 自然常数e相关数列收敛
- 线程与进程的区别
- 最长回文子串 V2(Manacher算法)
- 深度学习调参技巧(四)
- 水题-sdoi2017-相关分析
- opencv3_java 在图像上画circle圆圈 circle
- hdu 1568 Fibonacci
- 深度学习调参技巧(五)
- opencv3_java 在已有的图像上画圆圈 CircleOnImg
- 查找算法总结(4)--平衡二叉树
- sublime入门基础和常用配置