哈希
功能:
- 判重
- 比较两个字符串的不同
最常用的实现方式为进制哈希,即将字符串用十进制的数字表示出来。为了处理过大的数据,可以通过 unsigned long long 类型的自然溢出方式储存。
哈希冲突指两个不同的字符串哈希值相同的现象,理论上是不可避免的,需要更高级的方法解决 高中蒟蒻就别想学了。
家用计算机在 1s 内能运行约 \(5\times10^8\) 次 for 循环,其他形式的重复执行(如迭代器遍历、STL)可能会更慢。在使用哈希时要着重注意时间复杂度,必要时卡常(手写 C++ 封装的函数,如把 map 换成手写哈希)。
base 需要是一个大质数,如 \(19260817\)、\(131\)、\(233\)、\(10^9+7\)、\(998244353\)、\(19491001\)。
string
string a = "abc";
string.find("c"); //2
map
map<string, int> mp //卡常可用 unordered_map;
mp["abc"] = 1;
cout << mp["abc"]; //1

浙公网安备 33010602011771号