没有用什么高级方法,纯设计的
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string a; //接收的字符串
while(cin>>a){
bool ed[a.length()]; //该字符是否已重复 -数组
bool huan = false; //是否换行符输出
for(int i=0;i<a.length();i++) ed[i]=false; //初始化为false
for(int i=0;i<a.length();i++){ //循环扫描字符串
if(ed[i]==true) continue; //如果已经重复过了,则跳过
for(int j=i+1;j<a.length();j++){ //这次遍历只判断是否有重复
if(a[j]==a[i]){
if(huan==true) cout<<endl; //如果换行标志位true,则换行,第一次是FALSE,所不会输出换行
cout<<a[i]<<':'<<i; //输出"被重复"的值及其位置
j=a.length(); //改变j值让循环结束
huan=true; //换行标志设置位ture
}
}
for(int j=i+1;j<a.length();j++){ // 再次遍历,这次将输出和目标值重复的值的位置
if(a[j]==a[i]) { //如果重复
cout<<','<<a[j]<<':'<<j; //输出重复值和位置
ed[j]=true; //设置已重复标志位true,当i循环到这个值时,将会跳过
}
}
}
cout<<endl;
}
return 0;
}