#include <climits> #include <iostream> #include<map> #include<bits/stdc++.h> #include<string> using namespace std; struct ele { char ch ; int order ; } ; template <class T> class comp { public : bool operator()(const T & lhs , const T & rhs) { return lhs.ch <rhs.ch ; } } ; int main() { // vector<ele> s ; // string ts ; // cin>> ts ; // // if(ts.size() == 1) // // { // // } // ele it ; // for(int i = 0 ; i < ts.size() ;++ i ) // { // it.ch = ts[i] ; // it.order = i ; // s.push_back(it) ; // } // sort(s.begin() , s.end() , comp<ele>() ) ; // // for(auto it: s) // // { // // cout<<it.ch<<endl ; // // } // int st = 0 ; // for(int i = 1; i<s.size() ; ++ i ) // { // if(s[i].ch == s[i-1].ch) // { // } // else // { // if(i-st <= 1) // { // st = i ; // } // else { // while(st < i) // { // cout<<s[st].ch<<":"<<s[st].order<<","; // st++ ; // } // st = i ; // } // } // if(i -st >1 ) // { // while(st <= i) // { // cout<<s[st].ch<<":"<<s[st].order<<"," ; // st++ ; // } // } // } vector<ele> st; map<char , vector<int>> mp ; string s ; cin>>s ; for(int i = 0 ; i < s.size() ; ++ i) { mp[s[i]].push_back(i); // auto it = mp.find(s[i]) ; // vector<int> tmp = it->second ; // cout<<"tmp.size()"<<tmp.size()<<endl ; // if(tmp.size() <=2) // { // ele it ; // if(tmp.size() == 1) // { // it.ch = s[i] ; // it.order = tmp[0] ; // cout<<"it.ch:"<<it.ch<<endl ; // st.push_back(it) ; // } // if(tmp.size() == 2) // { // it.ch = s[i] ; // it.order = tmp[1] ; // cout<<"it.ch"<<it.ch ; // st.push_back(it) ; // } // } // else // { // ele it ; // it.ch = s[i] ; // it.order = i ; // cout<<"it.ch "<<it.ch<<endl ; // st.push_back(it) ; // } } // for(auto it : mp) // { // for(int i = 0 ; i < it.second.size() ; ++ i) // { // cout<<it.first<<":"<<it.second[i] <<endl ; ; // } // } //要安装位置顺序 输出 此时我们已经有了 每个字母的位置 , 继续遍历对每个字母看是否有 for(int i = 0 ; i < s.size() ;++ i ) { if(mp[s[i]].size() >1 && mp[s[i]][0]!=INT_MAX ) // 对应mp键的大小大于 1 并且没有访问过 { for(int j = 0 ; j < mp[s[i]].size() ; ++ j) { if( j ==mp[s[i]].size() -1 ) { cout<<s[i]<<":"<<mp[s[i]][j]<<endl ; break ; } cout<<s[i]<<":"<<mp[s[i]][j]<<"," ; } mp[s[i]][0] = INT_MAX ; } } } // 64 位输出请用 printf("%lld")