标签:class blog code 2014 string os
题目大意:
分析长度为n的子串有多少种。
思路分析:
对于没出现的字符,将其分配一个数字。
然后将子串看做一个nc进制的数。
然后hash判断。
#include <cstdio> #include <iostream> #include <algorithm> #include <map> #include <cstring> #include <string> using namespace std; bool vis[26666666]; int val[30]; char str[1111111]; int main() { int n,nc; while(scanf("%d%d",&n,&nc)!=EOF) { scanf("%s",str); memset(vis,0,sizeof vis); memset(val,0,sizeof val); int len=strlen(str); int cnt=1; int ans=0; for(int i=0;i+n<=len;i++) { int sum=0; for(int j=i;j<i+n;j++) { if(!val[str[j]-'a'])val[str[j]-'a']=cnt++; sum*=nc; sum+=val[str[j]-'a']; } if(!vis[sum]) { ans++; vis[sum]=true; } } printf("%d\n",ans); } return 0; }
POJ 1200 Crazy Search (字符串hash),布布扣,bubuko.com
POJ 1200 Crazy Search (字符串hash)
标签:class blog code 2014 string os
原文地址:http://blog.csdn.net/u010709592/article/details/34847635