Crazy Search POJ - 1200 (哈希)
Crazy Search
题意:求由nc个字母组成的长串中有多少长度为n的不同子串
将原串看成nc进制的数,分别求出长度为n的串的哈希值之后统计出不同的哈希值数即可。
1 #include <cstring> 2 #include <iostream> 3 #include <cstdio> 4 using namespace std; 5 #define CLR(m,a) memset(m,a,sizeof(m)) 6 const int maxn=16000010; 7 int val[128]; 8 int ha[maxn]; 9 int n,nc; 10 char s[1000010]; 11 int main() 12 { 13 while(scanf("%d%d",&n,&nc)!=EOF){ 14 CLR(val,0); 15 CLR(ha,0); 16 int cnt=0; 17 scanf("%s",s); 18 for(int i=0;s[i];i++){ 19 if(!val[s[i]]) val[s[i]]=cnt++; 20 if(cnt==nc) break; 21 } 22 int ans=0; 23 for(int i=0;s[i+n-1];i++){ 24 int hashval=0; 25 for(int j=i;j<i+n;j++){ 26 hashval=hashval*nc+val[s[j]]; 27 } 28 if(!ha[hashval]){ 29 ha[hashval]=1; 30 ans++; 31 } 32 } 33 printf("%d\n",ans); 34 } 35 36 }
分类:
*字符串---哈希
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· 回顾我的软件开发经历(1)
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· .NET 9 new features-C#13新的锁类型和语义
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会