我是靠谱客的博主 自信毛衣,最近开发中收集的这篇文章主要介绍输入一段字符串按出现次数排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#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] != ''; 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] = '';
	cout << "string is ";
	for (int j = 0; j < 128; j++) {
		if (des[j] != '')
			cout<< des[j];
		else
			break;
	}
	system("pause");
	return 0;
}

最后

以上就是自信毛衣为你收集整理的输入一段字符串按出现次数排序的全部内容,希望文章能够帮你解决输入一段字符串按出现次数排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部