解法一:map
程序一看就懂,前提你要会map
简单说一下map
map<key,value> mp
map<string,float> mp
mp["apple"]=2.6;
mp["pear"]=4.5;
cout<<mp["apple"];
Code:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string,bool> mp;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
mp[s]=true;
}
string s;
int ans=0;
while(cin>>s)
{
if(!mp[s])
ans++;
}
cout<<ans;
return 0;
}
解法二:哈希
基本跟集合元素差不多。就是要注意字符串的存储方式,可以这样:字符串的ASCII码乘上位权。
abc=97*3+96*2+95*1
#include <bits/stdc++.h>
using namespace std;
int Hash(string s)
{
int sum=0;
for(int i=0;i<s.size();i++)
sum+=s[i]*(i+1);
return sum%15889;
}
vector<string> tab[15889];
int main()
{
int n;
string t;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>t;
tab[Hash(t)].push_back(t);
}
int ans=0;
string s;
while(cin>>s)
{
int tmp=Hash(s);
int j;
for(j=0;j<tab[tmp].size();j++)
if(tab[tmp][j]==s) break;
if(j==tab[tmp].size()) ans++;
}
cout<<ans;
return 0;
}