实现C代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstring>
int hashtable[26*26*26+10];
int hashfunc(char c[],int len) {
int id = 0;
for (int i = 0; i < len; i++) {
id = id * 26 + (c[i] - 'A');
}
return id;
}
int main() {
int m, n;
char c[100][100];
char temp[100][100];
scanf("%d%d", &m ,&n);
for (int i = 0; i < n; i++) {
scanf("%s", c[i]);
int id = hashfunc(c[i], 3);
hashtable[id]++;
}
for (int i = 0; i < m; i++) {
scanf("%s", temp[i]);
int yan = hashfunc(temp[i], 3);
printf("%d", hashtable[yan]);
}
}
精髓在于将字符串转换为可一对一表示的数组下标,以空间换取时间。