给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。
A 中不同位置出现的 B 可重叠。
Input
输入共两行,分别是字符串 A 和字符串 B。
Output
输出一个整数,表示 B 在 A 中的出现次数。
Sample Input
zyzyzyz
zyz
Sample Output
3
HINT
1≤A,B 的长度 ≤10e6 ,A 、B 仅包含大小写字母。
分析:
字符串问题:一般有哈希和Kmp两种做法
字符串Hash(哈希):
所求的问题:求字符串B在字符串A中出现的位置或者次数。
暴力思维
枚举字符串A中个所有位置,非常浪费时间
例如字符串A为aaaaaaaaaaab 字符串B为aaaab
哈希思维
例如字符串A为aaaaaaaaaaab 字符串B为aaaab
字符串B长度=5,求出字符串B的哈希值,并且利用前缀和思想求字符A的哈希值
然后利用前缀和思想可知任意一段长度的哈希值
接下来就是寻找字符串A长度为5的哈希值且与字符串B的哈希值相等的位置,