关于字符串哈希:

其中需要主义的一个小地方:

字符串前缀哈希的题目:

代码实现:
// 字符串前缀哈希法:
#include <iostream>
#include <algorithm>
using namespace std;
// 把字符串看成是一个 P 进制数,每个字符的 ASCII 码对应数的一位
// ASCII 范围 0 - 127,最少 128 进制,经验上取 131 或 13331 冲突率低
const int N = 100010, P = 131;
typedef unsigned long long ULL

本文介绍了C++中实现字符串哈希的方法,强调了int溢出的undefined behavior以及如何利用unsigned int的溢出特性进行取模。建议使用131或13331作为基,以降低冲突率,并通过模2^64将大数值映射到合理范围。使用unsigned long long存储可简化子串哈希计算。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



