最小循环节len-next[len]
2015-11-04 19:53
239 查看
A B C D E F G H I J K
A - The Minimum Length
Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu
Submit Status
Description
There is a string A. The length of A is less than 1,000,000. I rewrite it again and again. Then I got a new string: AAAAAA...... Now I cut it from two different position and get a new string B. Then, give you the string B, can you tell me the length of the
shortest possible string A. For example, A="abcdefg". I got abcd efgabcdefgabcdefgabcdefg.... Then I cut the red part: efgabcdefgabcde as string B. From B, you should find out the shortest A.
Input
Multiply Test Cases. For each line there is a string B which contains only lowercase and uppercase charactors. The length of B is no more than 1,000,000.
Output
For each line, output an integer, as described above.
Sample Input
Sample Output
A - The Minimum Length
Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu
Submit Status
Description
There is a string A. The length of A is less than 1,000,000. I rewrite it again and again. Then I got a new string: AAAAAA...... Now I cut it from two different position and get a new string B. Then, give you the string B, can you tell me the length of the
shortest possible string A. For example, A="abcdefg". I got abcd efgabcdefgabcdefgabcdefg.... Then I cut the red part: efgabcdefgabcde as string B. From B, you should find out the shortest A.
Input
Multiply Test Cases. For each line there is a string B which contains only lowercase and uppercase charactors. The length of B is no more than 1,000,000.
Output
For each line, output an integer, as described above.
Sample Input
bcabcab efgabcdefgabcde
Sample Output
3 7
#include <iostream> #include<cstdio> #include<string.h> using namespace std; char t[1000001]; int next[1000001]; int main() { while(scanf("%s",t)!=EOF) { int len=strlen(t); int i=0,j=-1; next[0]=-1; while(i<len) { if(j==-1||t[i]==t[j]) { i++; j++; if(t[i]!=t[j]) next[i]=j; else next[i]=next[j]; } else j=next[j]; } printf("%d\n",len-next[len]); } return 0; }
相关文章推荐
- 黑马程序员—Java基础—IO1
- 1104冒泡出现文法分析
- R语言函数索引-11月
- 减少重复的代码
- JavaScript 函数调用时带括号和不带括号的区别!!!
- IOS 整体框架类图值得收藏
- 配置服务器的iSCSI和发起者端的配置
- 《大道至简第六章》读后感
- Android总结——Android系统框架
- 我遇到的kinect for windows2 USB不识别情况
- unity mac 下输入中文(XamarinStudio)
- Linux系统上线后系统初始化脚本
- OC中语法的一些随笔
- QT学习之路(一)——大话QT
- 快速排序算法实现C/C++
- centOS yum mysql
- redis pub/sub
- Xcode插件-Alcatraz安装
- ZOJ 3899 State Reversing【NTT+斯特林数+组合】
- ibatis 中$field$与#field#的区别