bzoj#P4259. 残缺的字符串

残缺的字符串

题目描述

很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串 AABB,其中 AA 串长度为 mmBB 串长度为 nn。可当你现在再次碰到这两个串时,这两个串已经老化了,每个串都有不同程度的残缺。你想对这两个串重新进行匹配,其中 BB 为模板串,那么现在问题来了,请回答,对于 BB 的每一个位置 ii,从这个位置开始连续 mm 个字符形成的子串是否可能与 AA 串完全匹配?

输入格式

第一行包含两个正整数 m,nm,n1mn3×1051 \le m \le n \le 3 \times 10^5),分别表示 AA 串和 BB 串的长度。

第二行为一个长度为 mm 的字符串 AA

第三行为一个长度为 nn 的字符串 BB

两个串均仅由小写字母和 * 号组成,其中 * 号表示相应位置已经残缺。

输出格式

第一行包含一个整数 kk,表示 BB 串中可以完全匹配 AA 串的位置个数。

k>0k>0,则第二行输出 kk 个正整数,从小到大依次输出每个可以匹配的开头位置(下标从 11 开始)。

样例输入

3 7
a*b
aebr*ob

样例输出

2
1 5

题目来源

By Claris