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;
}

京公网安备 11010502036488号