Registration system (超简单map)

 Registration system 注册系统

CodeForces - 4C

不久的将来,一个新的电子邮件服务"贝兰德斯克"将在伯兰开通。网站管理希望尽快启动他们的项目,这就是为什么他们请求您提供帮助。建议您实施现场注册系统的原型。该系统应遵循以下原则。

每次新用户想要注册时,他都会向系统发送一个带有自己姓名的请求。如果系统数据库中不存在此名称,则将其插入数据库,用户获得响应确定,确认注册成功。如果名称已经存在于系统数据库中,系统将组成一个新的用户名,将其作为提示发送给用户,并将提示插入数据库。新名称由以下规则组成。数字,从1开始,被一个接一个地附加到名称(名字1,名字2...),在这些数字中,被发现的最少,所以我的名字还不存在在数据库中。

输入

第一行包含n号(1 ≤ n ≤ 105)。以下n行包含对系统的请求。每个请求都是一条非空行,由不超过 32 个字符组成,这些字符都是小写拉丁字母。

输出

打印n行,这是系统对请求的响应:如果注册成功,请确定,或者如果已获取请求名称,则使用新名称的提示。

例子

输入

4
abacaba
acaba
abacaba
acab

扫描二维码关注公众号,回复: 13516224 查看本文章

输出

OK
OK
abacaba1
OK

输入

6
first
first
second
second
third
third

输出

OK
first1
OK
second1
OK
third1

题意描述:输入用户个数,以及用户注册的名字,如果该用户名不存在,输出OK,如果存在就输出这个已经注册过的名字+已被注册的次数-1

解题思路:利用map存用户名,然后map值为用户名出现的次数,如果只出现了一次,表明该用户名还没有任用,输出OK即可,如果出现次数大于1,输出该名字+出现次数-1即可

#include<stdio.h>
#include<iostream>
#include<map>
using namespace std;
int main(void)
{
	int n;
	cin>>n;
	map<string,int>m;
	while(n--)
	{
		string s;
		cin>>s;
		m[s]++;
		if(m[s]==1)
			cout<<"OK"<<endl;
		else
			cout<<s<<m[s]-1<<endl; 
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_58245389/article/details/120045226
今日推荐