解题思路
本来是一道水题,但是做着做着发现有点恶心,直接用暴力搜索,两层循环就搞定,因为输入时字母和数字所以用’*'来代替处理过的字符。然后就是把出现两次以上的字符输出就行了。
#include<cstdio>
#include<cstring>
int main(){
char str[105];
while(scanf("%s",str)!=EOF){
int len = strlen(str);
int arr[105],k;
for(int i = 0;i < len;i++){
if(str[i] != '*'){
k = 1;
memset(arr,0,sizeof(arr));
arr[0] = i;
for(int j = i+1;j < len;j++){
if(str[j] == str[i]){
arr[k++] = j;
str[j] = '*';
}
}
if(k > 1){
for(int j = 0;j < k;j++){
if(j != 0) printf(",");
printf("%c:%d",str[i],arr[j]);
}
printf("\n");
}
}
}
}
return 0;
}