哈希

功能:

  1. 判重
  2. 比较两个字符串的不同

最常用的实现方式为进制哈希,即将字符串用十进制的数字表示出来。为了处理过大的数据,可以通过 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
posted @ 2025-08-28 21:12  JZ8  阅读(6)  评论(0)    收藏  举报