题目链接:
https://www.luogu.com.cn/problem/P3370https://www.luogu.com.cn/problem/P3370
题目:
如题,给定 N 个字符串(第 i 个字符串长度为 ,字符串内包含数字、大小写字母,大小写敏感),请求出 N 个字符串中共有多少个不同的字符串。
输入格式:
第一行包含一个整数 N,为字符串的个数。
接下来 N 行每行包含一个字符串,为所提供的字符串。
输出格式:
输出包含一行,包含一个整数,为不同的字符串个数。
例:
输入:
5 abc aaaa abc abcc 12345
输出:
4
样例说明:
样例中第一个字符串(abc)和第三个字符串(abc)是一样的,所以所提供字符串的集合为{aaaa,abc,abcc,12345},故共计4个不同的字符串。
数据提示:
对于 100% 的数据:N≤10000,≈1000,≤1500。
思路:
这是一题经典的哈希表入门题。
我们可以用unordered_map来模拟哈希表(需要导入头文件unordered_map)。
首先定义一个哈希表arr将键值对中的键设置为字符串,用整形来表示值。
用一个全局变量n来接收有几个字符串,然后循环n次,并且接收字符串,使用unordered_map中的insert函数将字符串存入哈希表。
最后输出哈希表arr的大小即可。
AC代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<unordered_map>
using namespace std;
unordered_map<string, int> arr;
int n;
int main() {
scanf("%d", &n);
while (n--) {
string h;
cin >> h;
arr.insert({ h,1 });
}
printf("%d", arr.size());
return 0;
}
如果我的文章对你有所帮助,不妨给我个关注何点赞吧。