第一种:按照相邻元素
#include<stdio.h>
#include<string.h>
#define n 10005
char a[n];
int main() {
int N,i;
scanf("%d",&N);
while(N--) {
scanf("%s",a);
for( i=0; i<strlen(a)-1; i++) {
int k=1;
while(a[i+1]==a[i]) {
k++;
i++;
}
if(k==1)
printf("%c",a[i]);
if(k>1)
printf("%d%c",k,a[i]);
}
printf("\n");
}
return 0;
}
第二种:不想邻元素 在整个数组中 并且按照字母顺序排列
#include<map>
#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
map<char,int>q;
char a[10005];
int n;
scanf("%d",&n);
getchar();
while(n--) {
map<char,int>::iterator it;
gets(a);
for(int i=0; i<strlen(a); i++) {
q[a[i]]++;
}
for(it=q.begin(); it!=q.end(); it++){
if(it->second==1)
cout<<it->first;
else
cout<<it->second<<it->first;
}
cout<<endl;
q.clear();
}
return 0;
}