E : 子串循环问题 (Ver. I)
E : 子串循环问题 (Ver. I)
Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 18 Solved: 12
Description
给定一个字符串,求需要添加至少几个字符到字符串末尾才能使得整个字符串由某一个不为本身的子串循环构成? 如“abca”,添加“bc”后构成“abcabc”,其由子串“abc”循环构成;也可以添加“abca”后构成“abcaabca”,其由子串“abca”循环构成,相比之下“bc”只有2个字符,添加的字符量最少。
Input
第一行包括一个整数T(1 <= T <= 100),代表测试组数
每组测试数据包括一行字符串,其长度范围为 [3, 10^4]
Output
对于每组测试数据
输出一个整数N,代表添加的最小字符数量
Sample Input
4
aaa
abca
abcdefg
abcabcabcaSample Output
0
2
7
2
ac代码如下:
大致思路是:利用KMP算法中的其中一个核心函数Get_next(string a)来算next[a.size()]多少,然后分重叠串和非重叠串进行分类计算
#include<iostream>
using namespace std;int Get_next(string a)
{int len=a.size();int i=0,k=-1;int *next=new int[len+1];next[0]=-1;while(i<len){if(k==-1||a[i]==a[k]){i++,k++;next[i]=k;}else k=next[k];}if(next[len]*2>=len){if(len%(len-next[len])==0)return 0;else return (len-next[len])-len%(len-next[len]);}else return len-next[len]*2;}
int main()
{string a;int n;cin>>n;while(n--){cin>>a;cout<<Get_next(a)<<endl;}return 0;
}
E : 子串循环问题 (Ver. I)相关推荐
- 【id:56】【20分】C. 子串循环问题 (Ver. I)
题目描述 给定一个字符串,求需要添加至少几个字符到字符串末尾才能使得整个字符串串由某一个不为本身的子串循环构成? 如"abca",添加"bc"后构成" ...
- 2021招银网络提前批笔试编程题C++
不是我拍的哈,不是我哈,不哈!网上扒的 题一 void *memset(void *s, int c, size_t n); 将已开辟内存空间 s 的首 n 个字节的值设为值 c(给空间初始化) vo ...
- FZU1901 Period II
题目链接:FZU1901 Q - Period II Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- D.Say No to Palindromes(前缀和优化查询
D. Say No to Palindromes 题意: 定义一个字符串是好串,当且仅当 sss 不包含任何长度大于等于 222 的回文子串. 给定一个长度为 nnn 的字符串(仅包含 a,b,ca, ...
- 堆优化版dijkstra算法:AcWing 850. Dijkstra求最短路 II
堆优化版dijkstra算法分析: 朴素版dijkstra的时间复杂度为O(n^2),主要瓶颈在于第1步的寻找全局最小值的过程. 可以用小根堆(C++STL priority_queue)对dist数 ...
- 数据结构与算法Java(二)——字符串、矩阵压缩、递归、动态规划
不定期补充.修正.更新:欢迎大家讨论和指正 本文以数据结构(C语言版)第三版 李云清 杨庆红编著为主要参考资料,用Java来实现 数据结构与算法Java(一)--线性表 数据结构与算法Java(二)- ...
- 中兴面试总结,华为。技术,市场
1,软件测试,如何把这个测试做的更好. 进到一个新项目,作为测试人员应该都是想把测试做好,项目在符合客户质量要求的情况下按时交付的吧.但往往都事与愿违,造成这个结果的原因有很多很多.通过这段时间做自动 ...
- 动态游标for循环_【【动图算法】(动态规划篇):最长回文子串
本周继续做一道动态规划类型的题目,该题是阿里一面的一道算法题. [动图算法](动态规划篇):最长回文子串 leetcode 5 题:最长回文子串 https://leetcode-cn.com/pro ...
- 【KMP】Radio Transmission(最小循环子串)
[KMP]Radio Transmission(最小循环子串) Description 给你一个字符串,它是由某个字符串不断自我连接形成的.但是这个字符串是不确定的,现在只想知道它的最短长度是多少. ...
最新文章
- 初学者学python好还是c-学Python还是学C?
- View(视图)——ListView概述、Adapter分类
- Android 系统性能优化(45)---Android 多线程
- java数学函数Math类
- 删除同目录下面txt文件(利用os,fnmacth模块)
- java 多站点_Java 并发编程整体介绍 | 内含超多干货
- 全新版本的SoundSource for Mac 优质的音频控制软件
- 拓端tecdat|R语言分位数回归Quantile Regression分析租房价格
- winpe镜像文件iso下载_手把手教你从微软官网下载Windows10最新ISO镜像
- CAD中怎么配置灭火器?
- 室内空气流动原理图_空气流动基本原理
- 坚果pro3刷miui_锤子科技坚果Pro 3(12GB/256GB/全网通)手机卡怎么办?
- 程序员使用谷歌搜索的十种技巧
- 阿里,百度高级程序员力荐2019必看书单—附PDF电子档
- 关于PADS 9.5导入CAD图(dxf文件)的说明
- laravel-admin引用wangEditor编辑器 使用二:上传视频/音频(2)
- 小班中班,随机10以内加法练习题,A4纸可直接打印
- How to write a scientific research paper?
- Python 模块探索 —— pretty_errors
- mysql table crashed_快速解决MySQL:Table xxx is marked as crashed and should be repaired五个办法...