题意
给定两个字符串 $A$ 和 $B$,求 $B$ 在 $A$ 中的出现次数。
思路
这是一道 $KMP$ 的模板题。
不过 $Hash$ 是个好东西,可以用 $Hash$ 代替 $KMP$ 算法。
预处理两个字符串的哈希值,然后将 $A$ 中所有长度为 $len(B)$ 的子串的哈希值与 $B$ 的哈希值比较即可。
时间复杂度 $O(n + m)$,与 $KMP$ 算法一样!
缺点就是常数略大,而且不能用 $KMP$ 的 $next$ 数组。
代码
1 |
|
给定两个字符串 $A$ 和 $B$,求 $B$ 在 $A$ 中的出现次数。
这是一道 $KMP$ 的模板题。
不过 $Hash$ 是个好东西,可以用 $Hash$ 代替 $KMP$ 算法。
预处理两个字符串的哈希值,然后将 $A$ 中所有长度为 $len(B)$ 的子串的哈希值与 $B$ 的哈希值比较即可。
时间复杂度 $O(n + m)$,与 $KMP$ 算法一样!
缺点就是常数略大,而且不能用 $KMP$ 的 $next$ 数组。
1 | #include <bits/stdc++.h> |
欢迎关注我的其它发布渠道