【算法】最长回文子串-Manacher算法(hihoCoder 1032)
来源:互联网 发布:centos 内核配置文件 编辑:程序博客网 时间:2024/04/29 10:21
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”
小Ho奇怪的问道:“什么叫做最长回文子串呢?”
小Hi回答道:“一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦~”
小Ho道:“原来如此!那么我该怎么得到这些字符串呢?我又应该怎么告诉你我所计算出的最长回文子串呢?
样例输入
3
abababa
aaaabaa
acacdas
样例输出
7
5
3
限制
时间限制:1000ms
单点时限:1000ms
内存限制:64MB
思路
参考http://blog.csdn.net/ggggiqnypgjg/article/details/6645824/
代码
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n>30||n<=0) return; sc.nextLine(); for(int i=0;i<n;i++){ String string = sc.nextLine(); if(string.length()>1000000) return; int l=2*string.length()+1; char s[]=new char[l]; for(int j=0;j<string.length();j++){ s[j*2]='@'; s[j*2+1]=string.charAt(j); } s[l-1]='@'; int id=0; int mx=0; int p[] =new int[l]; for(int j=1;j<l;j++){ if(mx>j){ p[j]=p[2*id-j]>(mx-j)?(mx-j):p[2*id-j]; }else{ p[j]=1; } while(p[j]+j<l&&j-p[j]>=0&&s[p[j]+j]==s[j-p[j]]){ p[j]++; } if(p[j]+j>mx){ mx=p[j]+j; id=j; } } int subs=0; for(int j=0;j<l;j++){ if(subs<p[j]) subs=p[j]; } System.out.println(subs-1); } }}
0 0
- 【算法】最长回文子串-Manacher算法(hihoCoder 1032)
- hihoCoder#1032 最长回文子串——Manacher算法
- hihoCoder 1032 最长回文子串 (manacher算法)
- hihoCoder#1032 : 最长回文子串(manacher算法)
- hihocoder 1032 最长回文子串 (Manacher算法 详解+模板)
- hihocoder 1032, 最长回文子串, manacher算法
- Hihocoder #1032 : 最长回文子串 (Manacher算法)
- hihoCoder 最长回文子串(manacher算法:马拉车)
- [hihoCoder 1032]最长回文子串[Manacher]
- hihocoder 1032 : 最长回文子串(Manacher)
- hihoCoder #1032 : 最长回文子串(manacher)
- hihocoder #1032 : 最长回文子串(动态规划+manacher算法)
- Manacher算法求最长回文子串
- Manacher算法求最长回文子串
- 最长回文子串(Manacher算法)
- Manacher算法 最长回文子串
- 最长回文子串的manacher算法
- 最长回文子串,Manacher算法
- 如此之笨 storyboard里找view
- http客户端通信 (java原生)
- 正则表达式 - 元字符
- Picasso加载圆形图片和圆角图片
- iOS-生成plist文件,在项目中代码创建plist
- 【算法】最长回文子串-Manacher算法(hihoCoder 1032)
- 关于toolbar的menu显示icon问题
- 多台web服务器之间共享session
- [从头学数学] 第131节 全等三角形 小结与复习题
- 正则表达式 - 运算符优先级
- 曾经困扰过我的sql
- Java抽象类与接口
- 未使用的变量不报警告
- opencv Mat转CvMat