题意
给出一些字符串,求出其中不相同的有几个。
思路
我们可以用 h a s h hash hash或者 m a p map map。
代码
h a s h hash hash
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long ull;
const int base=131;
int n, ans, h[10001];
char s[1501];
ull hash(char s[])
int l = strlen(s);
ull f = 0;//自然溢出
for (int i = 0; i < l; i++) f = f * base + s[i];
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%s", s);
h[i] = hash(s);
}
sort(h + 1, h + n + 1);
for (int i = 1; i <= n; i++)
if (h[i - 1] != h[i]) ans++;
printf("%d", ans);
}
m a p map map
#include<map>
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int n, ans;
string s;
map<string, int> hash;
int main() {
scanf("%d",&n);
for (int i = 1; i <= n; i++)
{
cin >> s;
if (!hash[s])
{
ans++;
hash[s]++;
}
}
printf("%d", ans);
}