题目描述
给定一个字符串 s=s1s2…s∣s∣,其中 ∣s∣ 表示字符串 s 的长度,si 表示它的第 i 个字符。
我们引入以下几个定义:
- 字符串 s 的一个子串 s[i..j] (1≤i≤j≤∣s∣) 指的是字符串 sisi+1…sj。
- 字符串 s 长度为 l 的前缀(1≤l≤∣s∣)为 s[1..l]。
- 字符串 s 长度为 l 的后缀(1≤l≤∣s∣)为 s[∣s∣−l+1..∣s∣]。
你的任务是,对于所有前缀等于后缀的长度 l,输出它在字符串 s 中作为子串出现的次数。
输入格式
一行,包括一个只由大写英文字母组成的字符串 s (1≤∣s∣≤105)。
输出格式
第一行输出一个整数 k (0≤k≤∣s∣),表示有多少个前缀等于后缀。
接下来 k 行,每行输出两个整数 li ci,表示长度为 li 的前缀与后缀相等,并且它在字符串 s 中作为子串出现了 ci 次。请按照 li 递增的顺序输出每组数据。
样例
ABACABA
3
1 4
3 2
7 1
AAA
3
1 3
2 2
3 1
信息学奥赛网,一个优质的信息学奥赛学习资源平台!
信息学奥赛网 »
前缀和与后缀和