#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
//使用字符数组保存输入字符串
//使用map记录字符和出现位置的键值对,出现位置可能多个用动态数组保存
//用动态数组记录第一次出现的字符
//根据字符出现顺序打印出字符:位置
int main() {
char str[100] = { 0 };
map<char, vector<int>> map1;
vector<char> vec1(100);
while (scanf("%s", str) != EOF) {
for (int i = 0; str[i] != '\0'; i++) {
//若map1中没有{str[i],{i}}键值对,会自动创建
map1[str[i]].push_back(i);
//如果该字符第一次出现
if (map1[str[i]].size() == 1) {
vec1[i] = str[i];
}
}
//打印
vector<char>::iterator itchar;
//按出现顺序遍历每个字符
for (itchar = vec1.begin(); itchar != vec1.end(); itchar++) {
{
//仅打印重复出现的字符
//*itchar是字符,map1[*itchar]表示字符对应的值(动态数组)
if (map1[*itchar].size() > 1) {
printf("%c:%d", *itchar, map1[*itchar][0]);
for (int i = 1; i < map1[*itchar].size(); i++) {
printf(",%c:%d", *itchar, map1[*itchar][i]);
}
printf("\n");
}
}
}
}
return 0;
}