《算法笔记》字符串hash初步
大概题意:
给出N个字符串(由三个大写字母组成)
再给出M个查询的字符串
问每个查询字符串在N中出现的次数
思路:将字符串看作26进制转化为十进制,用HashTable查找出现次数
#include<stdio.h>
#include<string.h>
int hashfun(char s[],int len)//转化为10进制
{
int id=0;
for(int i=0;i<len;i++)
{
id=id*26+(s[i]-'A');
}
return id;
}
int main()
{
int n,m,hashtable[26*26*26+10]={0},id;
char s[100][5],temp[5];
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%s",s[i]);
hashtable[hashfun(s[i],3)]++;
}
for(int i=0;i<m;i++)
{
scanf("%s",temp);
printf("%d\n",hashtable[hashfun(temp,3)]);
}
return 0;
}