题目描述
小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。
输入描述
第 11 行,输入 NN,代表共计创造了多少个单词。
第 22 行至第 N+1N+1 行,输入 NN 个单词。
1\leq N \leq 10^41≤N≤104,保证字符串的总输入量不超过 10^6106。
输出描述
输出仅一行。若有重复的单词,就输出重复单词,没有重复单词,就输出 NO
,多个重复单词输出最先出现的。
输入输出样例
示例1
输入
6
1fagas
dsafa32j
lkiuopybncv
hfgdjytr
cncxfg
sdhrest
输出
NO
示例2
输入
5
sdfggfds
fgsdhsdf
dsfhsdhr
sdfhdfh
sdfggfds
输出
sdfggfds
运行限制
- 最大运行时间:3s
- 最大运行内存: 512M
思路:map容器存放每个单词,出现一次标记对应value为1。对每个输入的单词都调用count()判断是否已经出现过。小知识:mp.count(key)://由于map不包含重复的key,因此m.count(key)取值为0,或者1,表示是否包含。
#include <iostream>
#include <map>
using namespace std;
map<string,bool> mp;
int main()
{
// 请在此输入您的代码
int n;
cin>>n;
int flag=1;
for(int i=0;i<n;i++){
string s;
cin>>s;
if(mp.count(s)){
cout<<s<<endl;
flag=0;
break;
}else mp[s]=1;
}
if(flag)
cout<<"NO"<<endl;
return 0;
}