poj_1974,最长回文字串manacher
时间复杂度为O(n),参考:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 2001000
using namespace std;
char s[maxn],st[maxn];
int p[maxn];
int cases=1;
int n;
void rebuild()
{st[0]='$';st[1]='#';int len=strlen(s);for(int i=0;i<len;i++){st[2*i+2]=s[i];st[2*i+3]='#';}st[2*len+2]=0;
}
void solve()
{int len=2*strlen(s)+2;int id,mx=0,ans=1;for(int i=0;i<len;i++){if(mx>i)p[i]=min(p[2*id-i],mx-i);elsep[i]=1;for(;st[p[i]+i]==st[i-p[i]];p[i]++);if(p[i]+i>mx){mx=p[i]+i;id=i;}ans=max(ans,p[i]);}cout<<"Case "<<cases++<<": "<<ans-1<<endl;
}
int main()
{while(gets(s)){if(s[0]=='E'&&s[1]=='N'&&s[2]=='D') break;rebuild();solve();}return 0;
}
poj_1974,最长回文字串manacher相关推荐
- 求字符串的最长回文字串 O(n)
昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串.我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来. 回头我 ...
- leetcode系列--5.最长回文字串
leetcode系列–第5题.最长回文字串 给你一个字符串 s,找到 s 中最长的回文子串. 子串和子序列的区别: 子串:子串是指一个字串中连续的字串 子序列:子序列是指一个字串中非连续的字串 输入: ...
- 力扣HOT100算法题5:最长回文字串
文章目录 一.题目 二.方法一:解题思路 三.方法一:代码解析 四.方法二:动态规划 五.方法二:代码解析 一.题目 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1:输入:s = &quo ...
- 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...
- ural 1297 O(nlogn) 后缀数组求最长回文字串
把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...
- Lc5-最长回文字串
Lc5-最长回文子串 枚举字符串中的每一个字符,从当前下标开始想两边扩散,知道i 和 j指向的字符不相等就判断结果需不需要更新,如果他们之间的长度比已经res大就更新结果. js 求数组求字符串的长度 ...
- 算法_Longest Palindromic Substring(寻找最长回文字串)
题目:Given a string S, find the longest palindromic substring in S. You may assume that the maximum le ...
- manacher算法----O(n)最长回文串
manacher算法----O(n)最长回文串 分类:字符串 (126) (0) 举报 收藏 manacher的时间复杂度为O(n),后缀数组好像可以处理O(nlogn),但是有些变态题目可能卡 ...
- 通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)
1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...
最新文章
- Spring Cloud 万字总结!
- nginx启动报错(1113: No mapping for the Unicode character exists in the target multi-byte code page)...
- accesskey 提交
- 正在中止线程 异常处理
- 记在windows上MySQL8.0安装过程中遇到的问题及解决方案
- CodecContext-gop_size 是什么
- 实现用户行为监测之webfunny
- RTI DDS 01
- 循环结构习题:公式求π值
- 企业微信裂变获客,粉丝增长的优势在哪?
- 2017.7.27 计算机编程培训第二天
- matlab fir1 filter,Matlab滤波器设计
- 2019年丰巢科技Java面试题
- 通俗易懂 !Kafka 开发快速入门看这篇就够了
- java pda开发_《Java 手机/PDA 程序设计入门》读书笔
- 本科毕业生入户广州需要的材料清单
- android studio便签需求介绍,Android我的便签-----SQLite的使用方法
- 用什么查看java dump文件
- 常用加密算法及Java实现
- c语言单片机驱动数码管程序,51单片机IO口直接驱动LED数码管方法