知识整理:字符串hash
2024-09-21 05:29:31
字符串hash唯一用途是快速判断两字符串是否相等,但存在极小概率假阳性(本来不相等,但算法返回相等)。
根本思想是把一个字符串转换为一个整数,要求相同的字符串,对应的这个整数相同,不同的字符串,对应的这个整数不同。
#include<bits/stdc++.h>
#define BASE 2
#define MOD 1000000007
#define LL long long
#define MAXN 300005
using namespace std;
int hash[MAXN];
char s[MAXN];
int qpow(int base,int n){
LL ans=;
while(n){
if(n&)ans=(ans*base)%MOD;
base=(1LL*base*base)%MOD;
n>>=;
}
return ans;
}
int hash_ask(int l,int r){
if(l==)return hash[r];
else{
int ans=(1LL*hash[r]-hash[l-]+MOD)%MOD;
int rev=qpow(BASE,l);
rev=qpow(rev,MOD-);
ans=1LL*ans*rev%MOD;
return ans;
}
}
int hash_init(int len){
hash[]=s[];
for(int i=;i<len;i++){
hash[i]=(0LL+hash[i-]+s[i]*qpow(BASE,i)%MOD)%MOD;
}
} int main(){
scanf("%s",s);
hash_init(strlen(s));
while(){
int l,r;
scanf("%d %d",&l,&r);
printf("%d\n",hash_ask(l,r));
}
}
最新文章
- React学习笔记。
- Ajax中POST和GET的区别
- CentOS_PHP_NGINX_FastCGI
- 比对工具之 BWA 使用方法
- jsp页面变量作用域问题
- RequireJS入门指导 (转)
- 项目源码--IOS自定义视频播放器
- 前端必会的js知识总结整理
- asp.net弹出框后页面走样
- win 10应用商店下载应用错误码0x80070422
- 在VC6中使用ogre进行游戏开发
- codeforces 632F. Magic Matrix
- Solr commit 策略测试
- javaweb后台转码
- canvas小球
- Java框架spring Boot学习笔记(九):一个简单的RESTful API
- django-admin和manage.py
- supervisor来自动化部署,集成git
- C#面向对象(继承)
- C++Builder 网站。记住学习
热门文章
- 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
- [HCTF 2018]WarmUp
- 【JVM】符号引用和直接引用
- DNS稳定保障系列1--服务双保障“辅助DNS”产品介绍
- 【2017中国大学生程序设计竞赛 - 网络选拔赛】Friend-Graph
- 【dart学习】-- Dart之函数
- 离线+生成树+并查集——cf1213G
- 服务器安装TeamViewer 13
- 通过adb命令查看SN、CID码等信息
- 24. Jmeter GUI 及NON GUI实现分布式