可以直接用unqiue来去重再统计,也可以直接哈希
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int mod = 1e9 + 7;
ull a[10005];
int main()
{
int n;
cin>>n;
string s;
vector<string>v;
for(int i=0;i<n;i++){
cin>>s;
v.push_back(s);
}
sort(v.begin(),v.end());
cout<<unique(v.begin(),v.end())-v.begin()<<endl;
system("pause");
}
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ull a[10005];
ull myhash(string s){
ull ans=0;
for(int i=0;i<s.size();i++){
ans=(ans*29+ull(s[i]-'0'))%10000000007; ///这里可以不求余
}
return ans;
}
int main(){
int n;
cin>>n;
string s;
for(int i=0;i<n;i++){
cin>>s;
a[i]=myhash(s);
}
int ans=0;
sort(a,a+n);
for(int i=0;i<n;i++)
if(a[i]!=a[i+1])ans++;
cout<<ans<<endl;
return 0;
system("pause");
}