题意:
给n个数,输出第一个唯一的数。
思路:
字符串hash一下,用map维护出现次数即可。
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <map>
using namespace std;
typedef unsigned long long ull;
const int MAX_S = 100;
const int MAX_N = 100000;
const ull BASE = 131;
ull hashs(char s[]) {
int len = strlen(s);
ull ans = 0;
for (int i = 0; i < len; i++) {
ans = ans * BASE + (ull)s[i];
}
return ans & 0x7fffffff;
}
int n;
char s[MAX_N][MAX_S];
int t[MAX_N];
map<int, int> ma;
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", s[i]);
t[i] = hashs(s[i]);
ma[t[i]]++;
}
bool flag = false;
for (int i = 0; i < n; i++) {
if (ma[t[i]] == 1) {
printf("%s\n", s[i]);
flag = true;
break;
}
}
if (!flag) {
printf("None\n");
}
return 0;
}