#include <iostream> using namespace std; const int maxn=100; char S[maxn][5],temp[5]; int hashTable[26*26*26+10]; int hashFunc(char S[],int len){ int id=0; for(int i=0;i<len;i++){ id=id* 26 + (S[i]-'A'); } return id; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ scanf("%s",S[i]); int id=hashFunc(S[i],3); //將字符串S[i]轉換爲整數 hashTable[id]++; //該字符串的出現次數加1 } for(int i=0;i<m;i++){ scanf("%s",temp); int id=hashFunc(temp,3); //將字符串temp轉換爲整數 printf("%d\n",hashTable[id]); //輸出該字符串的出現次數 } return 0; }
/*將字符串S轉換爲整數*/ int hashFunc(char S[], int len){ int id=0; for(int i=0;i<len;i++){ id=id*25+s[i]-'A'); //將二十六進制轉換爲十進制 } return id; } int hashFunc(char S[],int len){ int id=0; for(int i=0;i<len;i++){ if(S[i]>='A' && S[i]<='Z'){ id=id*52+(S[i]-'A'); }else if(S[i] >='a' && S[i]<='z'){ id=id* 52+(S[i]-'a')+26; } } return id; }