HDU3068最长回文
2015-09-10 21:06
232 查看
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11935 Accepted Submission(s): 4385
Problem Description
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
Input
输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S
两组case之间由空行隔开(该空行不用处理)
字符串长度len <= 110000
Output
每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度.
Sample Input
aaaa abab
Sample Output
4 3
manacher算法
算法的基本思路是这样的:把原串每个字符中间用一个串中没出现过的字符分隔#开来(统一奇偶),同时为了防止越界,
在字符串的首部也加入一个特殊符,但是与分隔符不同。同时字符串的末尾也加入′\0′。
算法的核心:用辅助数组p记录以每个字符为核心的最长回文字符串半径。也就是p[i]记录了以str[i]为中心的最长回文字符串半径。
p[i]最小为1,此时回文字符串就是字符串本身。示例:原字符串′abba′,处理后的新串′#a#b#b#a#\0’,
得到对应的辅助数组p=[0,1,1,2,1,2,5,2,2,1]。
相关文章推荐
- Android PopupWindow 仿微信点赞和评论弹出框
- 数据模型及类目
- 虚拟机联网问题
- php中urlencode空格变成+号解决方法
- Minimum Path Sum
- notification 点击响应 以及启动activity的坑
- POJ 2184 Cow Exhibition (处理负值的01背包)
- 《剑指offer》数值的整数次方
- C++ Primer Plus 第6版 中文版 第6章编程练习
- volatile and non-cacheable
- 树状数组(一)
- java中对象的理解
- C++Primer第五版 1.4.4节练习
- MQTT Paho Getting Started
- ETC(电子不停车收费系统)的发展演变
- 解决 驱动创建设备节点时 权限为 root只读只写 的问题
- 解决java.net.SocketException: Too many open files
- Mysql 事务、锁
- 汇编语言基础学习
- Reflect