题解 | #字符统计#
字符统计
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; }}