【 哈希和哈希表】子串查找
时间限制: 1 Sec 内存限制: 128 MB
提交: 78 解决: 25
[提交] [状态] [讨论版] [命题人:admin]
题目描述
这是一道模板题。
给定一个字符串A和一个字符串B,求B在A中的出现次数。A和B中的字符均为英语大写字母或小写字母。
A中不同位置出现的B可重叠。
输入
输入共两行,分别是字符串A和字符串B。
输出
输出一个整数,表示B在A中的出现次数。
样例输入
zyzyzyz
zyz
样例输出
3
提示
1≤A,B的长度≤106,A、B仅包含大小写字母。
一开始用kmp做的,后来知道了hash,突然发现了一个新世界
就是将一个字符串映射到一个整数,将整数代替字符串,
显然会出现几个不同的字符串映射到同一个整数,这种情况是要避免的,不然你就wa了
显然这些数越分散,
或者说,嗯,把熵这个概念引进来比较好理解,
熵越大(越杂乱),
这样就越不会出现几个不同的字符串映射到同一个整数上的情况
用的双hash,一个hash,wa了
一般k,p不要用1e9+7 或者1e9+9,出题人可能会卡,这个题用了双hash,
所以1e9+7,1e9+9没问题,但是别的题不一定不会卡,嗯,还是避免的好
一般的hash
子串求hash公式