描述
输入n个字符串,判断有多少个不同的字符串。
样例输入 1
5 aaaa bbbb aaaa bcdef qwerty
样例输出 1
4
#include<bits/stdc++.h>
using namespace std;
int base=131;
char s[10005];
unsigned long long a[100005]; //无符号的长整型
int n;
unsigned long long hash(char s[]){
int len=strlen(s);
unsigned long long sum=0;
for(int i=0;i<len;i++){
sum=sum*base+s[i]; //自然溢出hash 在极低概率下会出现不同字符串对应某一个相同的值 hash冲突
}
return sum;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
a[i]=hash(s);
cout<<a[i]<<endl;
}
sort(a,a+n);
int ans=1;
for(int i=1;i<n;i++){
if(a[i]!=a[i-1]){
ans++;
}
}
cout<<ans;
return 0;
}