#831. 「POJ1961」Period题解

博客详细解析了POJ1961题目的思路和解决方案,涉及字符串的周期性判断,通过计算next数组并利用特定公式确定前缀的周期长度。文章还提及了与POJ2406题目的联系,并提供了代码实现。
摘要由CSDN通过智能技术生成

#831. 「POJ1961」Period题解

对于具有N个字符的给定字符串S的每个前缀(每个字符包含97到126之间的ASCII代码),我们想知道前缀是否是一个周期字符串。也就是说,对于每个i(2<=i<=N),我们想知道最大K>1(如果有),这样长度i的S前缀可以写成AK ,这是一个级联的K次,对于一些字符串A,当然,我们也想知道周期K。

输入

输入由几个测试用例组成。每个测试用例由两行组成。第一行包含N(2<=N<=1 000 000)-字符串S的大小;第二行包含字符串S。输入文件以0结尾

输出

对于每个测试用例,输出“TestCase#”和单行上的连续测试用例编号;然后,对于长度为i且周期K>1的每个前缀,输出前缀大小i和用单个空格分隔的周期K;前缀大小必须是递增的。在每个测试用例之后打印空行。

样例

样例输入1
3
aaa
12
aabaabaabaab
0
样例输出1
Test case #1
2 2
3 3

Test case #2
2 2
6 2
9 3
12 4

思路

题目几乎没有废话,(用人话说就是 给你一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值