#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
set<string> num;
int rtime = 0;
cin>>rtime;
while(rtime--)
{
string temp;
cin>>temp;
num.insert(temp);
}
cout<<num.size()<<endl;
return 0;
}
C++98思路:
用STL中的set(集合)容器将每个字符串插入进去后,输出set的size()即可。
set的特性就是set容器里面的元素都是独一无二的,set不能插入一样的元素。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
long long cmp(const void*a, const void*b)
{
return (*(long long*)a-*(long long*)b);
}
int main()
{
long long time = 0;
long long count = 1;
scanf("%lld",&time);
long long hashcode[11000] ={0};
long long index = 0;
while(time--)
{
char str[1600] = " ";
scanf("%s",str);
long long lenth = strlen(str);
long long i = 0;
for(;i<lenth;i++)
{
hashcode[index]+=((long long)str[i]);
hashcode[index]*=10;
hashcode[index] = hashcode[index]%122222221;
// 哈希部分
}
index++;
}
qsort(hashcode,index,sizeof(long long),cmp);
long long k = 0;
for(k=1;k<index;k++)
if(hashcode[k]!=hashcode[k-1])
count++;
printf("%lld",count);
return 0;
}
C思路:
不存在完美的哈希函数!只尽可能包容所以情况!
因篇幅问题不能全部显示,请点此查看更多更全内容