博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3746 将字符串的全部字符最少循环2次需要添加的字符数
阅读量:5050 次
发布时间:2019-06-12

本文共 1089 字,大约阅读时间需要 3 分钟。

Sample Input

3
aaa
abca
abcde

Sample Output

0
2
5

题目大意:

给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。
例子:
abcabc 已经循环2次,添加数为0
abcac 没有循环2次,添加字符abcac。数目为5.
abcabcab 已经循环过2次,但第三次不完整,需要添加数为1

 

1 # include 
2 # include
3 using namespace std; 4 5 char s1[100010] ; 6 int next[100010] ; 7 int tlen ; 8 int xlen ; 9 10 void getNext()11 {12 int j, k;13 j = 0; k = -1; next[0] = -1;14 while(j < tlen)15 if(k == -1 || s1[j] == s1[k])16 next[++j] = ++k;17 else18 k = next[k];19 20 }21 22 int main ()23 {24 int T ;25 int add ;26 scanf("%d" , &T); 27 while (T--)28 {29 scanf("%s" , s1) ;30 tlen = strlen(s1) ;31 getNext() ;32 xlen =tlen - next[tlen] ; //循环节的长度33 if (xlen != tlen && tlen % xlen == 0)34 printf("0\n") ;35 else36 {37 add = xlen - next[tlen] % xlen ;38 printf("%d\n" , add) ;39 }40 }41 42 43 return 0 ;44 }
View Code

 

转载于:https://www.cnblogs.com/mengchunchen/p/4497901.html

你可能感兴趣的文章
JVM参数配置及内存调优
查看>>
网页自适应
查看>>
【转】iOS - SQLite 数据库存储
查看>>
积木分发
查看>>
ASP.NET Core 1.1通过EF Core访问Mysql及linux调试
查看>>
常用第三方开源上传组件总结
查看>>
洗牌算法Fisher-Yates以及C语言随机数的产生
查看>>
lintcode-medium-Find the Missing Number
查看>>
网址url传递参数包含中文时乱码的问题的解决
查看>>
java——多线程并发库
查看>>
[js开源组件开发]js轮播图片支持手机滑动切换
查看>>
JSONObject的toBean 和 fromObject
查看>>
DoTween小结
查看>>
CURL 支持 GET、PUT、POST、DELETE请求
查看>>
.net(c#)中的new关键字
查看>>
【文智背后的奥秘】系列篇——文本聚类系统
查看>>
实时信号
查看>>
struct和typedef struct的区别
查看>>
内存测试——Android Studio中对应进程的Heap
查看>>
『校内OJ』NOIP2019模拟赛(二)
查看>>