hdu_3746_kmp_给你一个字符串要求你添加最少的字符串使字符串最少循环两次
来源:互联网 发布:淘宝收到货后申请退款 编辑:程序博客网 时间:2024/05/18 02:51
题意:
给你一个字符串要求你添加最少的字符串使字符串最少循环两次,
Sample Input
3
aaa
abca
abcde
Sample Output
0
2
5
解;
kmp_next求最小循环结,然后直接求最小添加就行
#include<bits/stdc++.h>using namespace std;const int N=(int) 1e5+10;int m,nxt[N];void getnext(char *s){ int i=0,j=-1; nxt[0]=-1; while(i<m) { if(j==-1||s[i]==s[j]) nxt[++i]=++j; else j=nxt[j]; }}int main(){ char s[N]; int t,i,j; while(cin>>t) { while(t--) { scanf("%s",s); m=strlen(s); getnext(s); int len=m-nxt[m]; if(len!=m&&m%len==0) puts("0"); else cout<<len-m%len<<endl; } } return 0;}
阅读全文
0 0
- hdu_3746_kmp_给你一个字符串要求你添加最少的字符串使字符串最少循环两次
- 添加最少的字符使整体字符串都是回文字符串
- 添加最少字符使成为回文字符串
- 添加最少的字符使字符串成为回文
- 输入一个字符串,删除出现次数最少的字符串。
- 添加最少括号匹配给定括号字符串
- 一个字符串要变成回文串的需要添加的字符最少个数
- 添加最少字符数构成使字符串构成回文
- 字符串问题---添加最少字符使字符串整体都是回文字符串
- 删除一个字符串中出现次数最少的字符
- 删除一个字符串中出现次数最少的字符
- 删除一个字符串中出现次数最少的字符
- 删除字符串中出现最少的字符
- 删除字符串中最少的字符
- 最少操作次数使两个字符串相等
- 插入最少的字符使字符串成为回文
- 插入最少的字符使字符串成为回文串
- 数组字符串系列之,将矩阵逆时针旋转90度,要求使用最少的额外空间
- GUI----初期界面
- A率PCM编码
- 爬虫个人小结
- Python中相见恨晚的开源package
- 设计一个名为MyPoint的类
- hdu_3746_kmp_给你一个字符串要求你添加最少的字符串使字符串最少循环两次
- angularjs
- 无限轮播加点
- sdut acm oj 顺序表应用7:最大子段和之分治递归法
- GUI----如何给按钮添加功能
- java 拷贝非空对象属性值
- JAVA面试经验分享
- 自定义view
- sqlite查询排序