题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
#include <stdio.h>
struct str{
char zm;
int time;
};
int main() {
char a[1000];
while (scanf("%s",a) != EOF) {
int n=0,i,j,time;
while(a[n]!=0) n++;
struct str t[n],temp;
for(i=0;i<n;i++)
t[i].zm=a[i];
//冒泡字母排序
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(t[j].zm>t[j+1].zm){
temp=t[j];
t[j]=t[j+1];
t[j+1]=temp;
}
//统计次数
for(i=0;i<n;i++){
time=0;
for(j=0;j<i;j++)
if(t[i].zm==t[j].zm)
time++;
else if(t[i].zm!=t[j].zm&&time!=0)
break;
t[i].time=time;
}
//删除重复
for(i=0;i<n-1;i++)
if(t[i].zm==t[i+1].zm){
for(j=i;j<n-1;j++){
t[j]=t[j+1];
}
n--;
i--;
}
//冒泡次数排序
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(t[j].time<t[j+1].time){
temp=t[j];
t[j]=t[j+1];
t[j+1]=temp;
}
//输出
for(i=0;i<n;i++)
printf("%c",t[i].zm);
return 0;
}}
