输入一段字符串按出现次数排序

1 篇文章 0 订阅
1 篇文章 0 订阅
#pragma warning(disable:4996)

#include <stdio.h>
#include<iostream>
#include<vector>
#include<string>
using namespace std;
using std::cout;
using std::cin;
using std::vector;


struct s {
	int count;
	char strl;
};


int main()
{
	s s_str[128];
	int cnt[128] = { 0 };
	int pre[128];
	string str;
	cin >> str;
	int count = str.length();
	int len;
	for (len = 0; str[len] != '\0'; len++)
		cnt[str[len]-97]++;
	int number = 0;
	bool flag = false;
	for (int j = 0; j < count; j++)
		if (cnt[str[j]-97] != 0)
		{
			flag = false;
			for (int i = 0; i < number; i++)
			{
				if (str[j] == s_str[i].strl)
				{
					flag = true;
					break;
				}
			}
			if (flag == false)
			{
				s_str[number].count = cnt[str[j]-97];
				s_str[number].strl = str[j];
				number++;
			}
		}
	char temp;
	int tempcount;
	for (int i = 0; i < number; i++)
		for (int j = 0; j < number - i - 1; j++)
		{
			if (s_str[j + 1].count > s_str[j].count || 
				(s_str[j + 1].count == s_str[j].count && s_str[j + 1].strl > s_str[j].strl))
			{
				temp = s_str[j + 1].strl;
				s_str[j + 1].strl = s_str[j].strl;
				s_str[j].strl = temp;
				tempcount = s_str[j + 1].count;
				s_str[j + 1].count = s_str[j].count;
				s_str[j].count = tempcount;
			}
		}
	char des[128];
	int nn = 0;
	for (int j = 0; j < number; j++)
		cout << s_str[j].strl << ":times is" << s_str[j].count << endl;

	for (int j = 0; j < number; j++) {
		for (int i = 0; i < s_str[j].count; i++) {
			des[nn] = s_str[j].strl;
			nn++;
		}
	}
	des[++nn] = '\0';
	cout << "string is ";
	for (int j = 0; j < 128; j++) {
		if (des[j] != '\0')
			cout<< des[j];
		else
			break;
	}
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值