如果用户在输出结果为" OK"否则输出将是字符串和它旁边的字符串的重复时间的数量
我知道代码看起来非常愚蠢,这是我第一次使用地图而且我不熟悉语法
任何帮助将不胜感激
int main()
{
int t, i = 0;
string s;
map<string, int> m;
cin >> t;
while (t--) {
cin >> s;
m[s] = i++;
if (i == 0)
cout << "OK";
else
cout << m[s] << m.second << endl;
}
}
答案 0 :(得分:3)
cin >> s;
m[s]++;
if (m[s] == 1)
cout << "OK\n";
else
cout << "this is the " << m[s] << "th occurence of " << s << "\n";
请注意,即使地图中尚未显示m[s]
,您也可以使用s
,因为运营商[]
会自动添加它并将其第二个初始化为零。
编辑:为了避免在地图中搜索两次(见@Slava的评论),我们可以用这种方式做得更好(更快):
cin >> s;
i = ++m[s];
if (i == 1)
cout << "OK\n";
else
cout << "this is the " << i << "th occurence of " << s << "\n";