#include<cstdio> #include<string> #include<map> #include<vector> using namespace std; int main() { char arr[10001]; while (scanf("%s", arr) != EOF) { string str = arr; map<char, vector<int>> myMap; //映射所有字符,对应字符下标 for (int i = 0; i < str.size(); i++) { myMap[str[i]].push_back(i);//记录下标 } for (int i = 0; i < str.size(); i++) { if (myMap.find(str[i]) != myMap.end() && myMap[str[i]].size() != 1) { for (int j = 0; j < myMap[str[i]].size() - 1; j++) { printf("%c:%d,", str[i], myMap[str[i]][j]); } printf("%c:%d\n", str[i], myMap[str[i]][myMap[str[i]].size() - 1]); myMap.erase(str[i]); } } } return 0; }
map+vector,记录下标后再输出