(使用STL自带的排序函数进行编程7.3.14)UVA 10062 Tell me the frequencies!(求一个字符出现的次数(包括字母和数字)&&按出现的次数降序)

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

const int maxn = 150;
struct A{
	char asc;
	int num;
}a[maxn];

int sum[maxn];

bool cmp(const A& a , const A& b){
	if(a.num != b.num){
		return a.num < b.num;
	}

	return a.asc > b.asc;
}


int main(){
	char str[1010];
	int counter = 0;
	while(gets(str)){//注意不要写成scanf("%s",str),那样会WA,因为这道题需要处理空格

		if(counter++){
			printf("\n");
		}
		memset(a,0,sizeof(a));
		int len = strlen(str);

		int i;
		for(i = 0 ; i < len ; ++i){//使用结构体来计算一个字符出现了多少次
			a[str[i]].asc = str[i];
			a[str[i]].num++;
		}

		sort(a,a+maxn,cmp);

		for(i = 0 ; i < maxn ; ++i){
			if(a[i].num != 0){
				printf("%d %d\n",a[i].asc,a[i].num);
			}
		}

	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值