1516 - KMP
时间限制 : 1 秒
内存限制 : 128 MB
给出两个字符串s1 和 s2,若s1的区间[l,r]子串与s2完全相同,则称s2在s1中出现了,其出现位置为l。现在请你求出s2在s1中所有出现的位置。
定义一个字符串s的border为s的一个非s本身的子串t,满足t既是s的前缀,又是s的后缀。
对于s2,你还需要求出对于每个前缀s'的最长border t'的长度。
输入
第一行为一个字符串,即为s1.
第二行为一个字符串,即为s2.
输出
首先输出若干行,每一行一个整数,按从小到大的顺序输出s2在s1中出现的位置。
最后一行输出|s2|个整数,第i个整数表示s2的长度为i的前缀的最长border长度。
样例
输入
ABABABC ABA
输出
1 3 0 0 1
输入
AABAABAABAAF AABAAF
输出
7 0 1 0 1 2 0