按字符出现频率对字符进行排序

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

void tongji()
{
	string input;
	string output;

	getline(cin,input);//读入带空格的字符串

	int n;
	n=input.size();//求字符串的大小

	int a[255]={0};
	int b[255]={0};
	bool c[255]={false};

	int i=0;

	for(i=0;i<n;i++)
	{
		a[input[i]]++;//统计字符出现的频率
		b[input[i]]++;
	}

	sort(b,b+255);//对字符的出现频率进行排序
	int j;

	for(i=0;i<255;i++)//按频率大小输出字符
	{
		for(j=0;j<255;j++)
		{
			if(b[i]==a[j] && b[i]!=0 && c[j]==false){cout<<char(j);c[j]=true;}
			else continue;
		}
	}

}

int main()
{
	tongji();
	return 0;
}

按字符出现频率对字符进行排序

时间: 2024-08-09 06:35:02

按字符出现频率对字符进行排序的相关文章

代码题(61)— 根据字符出现频率排序

1.451. 根据字符出现频率排序 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次. 因此'e'必须出现在'r'和't'之前.此外,"eetr"也是一个有效的答案. 示例 2: 输入: "cccaaa" 输出: "cccaaa" 解释: 'c'和'a'都出现三次.此外,"aaac

Leetcode 451.根据字符出现频率排序

根据字符出现频率排序 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和't'都只出现一次. 因此'e'必须出现在'r'和't'之前.此外,"eetr"也是一个有效的答案. 示例 2: 输入: "cccaaa" 输出: "cccaaa" 解释: 'c'和'a'都出现三次.此外,"aaaccc"

英文字符进行频率的统计,直方图输出

问题 对指定文件中的英文字符进行频率的统计,不区分大小写(都按照大写统计),忽略非字母.并使用频率直方图的形式显示出来. 来源 贴吧吧友提问 代码 #include<iostream> #include<cctype> #include<cstdio> #include<cassert> using namespace std; class LetterCount { private: enum{LETTERS_SUM=26}; //常量:个英文字母有26个

【华为练习题】字符出现频率

[华为练习题]字符出现频率 题目 描述:写出一个程序,输出基准字符串中统计指定字符出现的频率 字符串仅包括英文大小写字母和空格.逗号.点号 小数点后保留2位有效数字,第三位四舍五入 举例: 输入:wo shi, yi zhi.xiao xiao niao ' '(空格) 输出:0.17 接口说明: /* 功能: 输入的基准字符串中统计指定字符出现的频率 字符串仅包括英文大小写字母和空格.逗号.点号 小数点后保留2位有效数字,第三位四舍五入 输入: String pString 输入的基准字符串

要求将字符串中的字符按字符出现的次数从小到大进行排序

package com.xiawei.sort; import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry; public class TestString {//要求将字符串中的字符按字符出现的次数

C语言字符型数据(字符)

字符型数据的表示 字符型数据就是字符. 字符型数据是用单引号括起来的一个字符.例如: 'a'.'b'.'='.'+'.'?' 都是合法字符型数据. 在C语言中,字符型数据有以下特点: 字符型数据只能用单引号括起来,不能用双引号或其它括号. 字符型数据只能是单个字符,不能是字符串. 字符可以是字符集中任意字符.但数字被定义为字符型之后就不能参与数值运算.如'5'和5 是不同的.'5'是字符型数据,不能参与运算. 转义字符 转义字符是一种特殊的字符.转义字符以反斜线"\"开头,后跟一个或几

【算法】按频率高低来进行排序

题目:设计一种排序方法,安装元素的频率对数组进行排序,频率高的在前,频率相同的元素按照原来的顺序排列.比如: 数组int a[19] = {1,2,2,3,3,3,4,4,5,5,5,5,6,6,6,7,8,9,10}, 输出: {5,5,5,5,3,3,3,6,6,6,2,2,4,4,1,7,8,9,10}; 思路:可以将数组1中的数字看成是数组2的下标,而数组2则记录他的下标所对应的数组1的数字的个数.例如: b[5]=4,    代表a数组中5出现了4次. #include <stdio.

java小练习:输入一个字符,判断该字符是数字?英文字母?还是其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符,判断该字符是数字?英文字母?还是其他字符  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个字符:"); char ch = sc.next().charAt(0);

从字符数组中删除字符

/*实现程序的功能:从字符数组s中删除存放在c中的字符.*/ #include <stdio.h> int main(int argc, const char *argv[]) { char s[80],c; printf("请输入一个字符串\n"); gets(s); printf("请输入一个字符\n"); scanf("%c",&c); //遍历字符串 for (int i = 0; s[i] != '\0'; i++)