《算法笔记》字符串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;
}
posted @ 2021-02-01 13:13  inss!w!  阅读(64)  评论(0编辑  收藏  举报