题目描述
小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。
输入描述
第 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
时间要求不大,直接暴力枚举了
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,count=0;
bool flag = false;
cin >> n;
queue<string> q;
string* s = new string[n];
for (int i = 0; i < n; i++)
{
cin >> s[i];
}
for (int i = 0; i < n-1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (s[i] == s[j])
{
for (int k = 0; k < count; k++)//这里要判断之前是否已经存过s[i]了
{
if (s[i] == s[k]) flag = true;
}
if (flag == false)
{
q.push(s[i]);
count++;
flag = true;
}
}
}
}
while (!q.empty()&&count>0)
{
cout << q.front() << endl;
q.pop();
}
if (count == 0) cout << "NO";
}