字符串hash初步(空間換時間)

問題描述:給出N個字符串(由恰好三位大寫字母組成),再給出M個查詢字符串,問每個查詢字符串在N個字符串中出現的次數

#include<iostream>
using namespace std;
const int maxn = 100;
char S[maxn][5],temp[5];
int hashTable[maxn];
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;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>S[i];
		int id = hashFunc(S[i],3);
		hashTable[id]++;
	}
	for(int i=0;i<m;i++){
		cin>>temp;
		int id = hashFunc(temp,3);
		cout<<hashTable[id]<<endl;
	}
	return 0;
}
 

 也可使用map

#include<bits/stdc++.h>
using namespace std;
int main()
{
	map<string,int> mp;
	int n;
	cin>>n;
	string s1;
	for(int i=0;i<n;i++){
		cin>>s1;
		mp[s1]++;
	}
	int m;
	cin>>m;
	for(int i=0;i<m;i++){
		cin>>s1;
		cout<<mp[s1]<<endl;
	}
	return 0;	
} 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章