map的高级复杂用法。
将map值的部分使用struct来表示。因为题目要求需要按照下标顺序从小到大输出。那么在struct中添加一个judge用于判断是否已经判别,这样在对字符串从index = 0开始,就满足了题目要求。
const int MAXN = 1001; struct Point{ int num; vector<int>AA; int judge = 0; }; int main(){ string A; map<char,Point>mapp; cin>>A; for(int i=0;i<A.size();i++){ mapp[A[i]].num += 1; } for(int i=0;i<A.size();i++){ if(mapp[A[i]].num>1){ mapp[A[i]].AA.push_back(i); } } for(int i=0;i<A.size();i++){ if(mapp[A[i]].num>1 && mapp[A[i]].judge==0){ for(int j=0;j<mapp[A[i]].AA.size();j++){ if(j==0) printf("%c:%d",A[i],mapp[A[i]].AA[j]); else printf(",%c:%d",A[i],mapp[A[i]].AA[j]); } cout<<endl; mapp[A[i]].judge = 1; } } return 0; }