字符串哈希 模板 例题
字符串哈希可以快速判断两个子字符串是否相等
O(n)预处理,O(1)判断
原理:https://www.cnblogs.com/ydUESTC/p/15722400.html
注意 字符串哈希时后面的字符视为低位,这样方便取一段字符的哈希时先做乘法再做减法。
例题:https://leetcode.cn/problems/maximum-deletions-on-a-string/
模板:

typedef unsigned long long ULL; const int N=4010,P=131;//P=131或13331 ULL h[N];//预处理出哈希数组 ULL p[N];//预处理P^i数组 ULL Get(int l,int r) { return h[r]-h[l-1]*p[r-l+1]; } cin>>str; int n=str.size(); p[0]=1; for(int i=1;i<=n;i++) { p[i]=p[i-1]*P; h[i]=h[i-1]*P+str[i-1];//注意这里,最新的字符视为str[i-1]*P^0 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人