题意
有一个注册系统,当用户输入一个要注册的用户名时,系统会先检查这个用户名是否被注册过,如果没有被注册过,系统会将这个用户名插入数据库,然后给用户返回信息显示”OK”,否则系统会生成一个新的用户名插入数据库并返回给用户,新的用户名是这么生成的:在用户输入的用户名后边增加一个数,这个数是从1开始最小的满足加上这个数后的用户名在之前没有被注册过的数。现在给你用户按顺序每次输入的用户名,问每一次系统会返回什么信息
思路
使用map记录该用户名出现的次数,对于之前没出现的就输出”OK”,出现的就输出该字符串加上次数,然后次数加1即可
代码
#include <cstdio>
#include <map>
#include <string>
#include <iostream>
using namespace std;
map<string,int> mp;
int main()
{
int n;
string s;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s;
mp[s]++;
if(mp[s]==1)
cout<<"OK"<<endl;
else cout<<s<<mp[s]-1<<endl;
}
return 0;
}