当前位置: 首页 > news >正文

根据字符出现频率排序

问题描述

给定一个字符串,请将字符串里的字符按照出现的频率降序排列,如果频率相同,则按照字符的ASCII码升序排列。

示例 1:

输入:

"tree"

输出:

"eert"

解释:

'e'出现两次,'r'和't'都只出现一次。

因此'e'必须出现在'r'和't'之前,而且'r'比't'的ASCII码小。

示例 2:

输入:

"cccaaa"

输出:

"aaaccc"

解释:

'c'和'a'都出现三次。因此按照字符升序排列,'a'在'c'前。

示例 3:

输入:

"Aabb"

输出:

"bbAa"

解释:

'A'和'a'被认为是两种不同的字符,并且'A'的ASCII码比'a'小

输入说明

输入一个字符串

输出说明

输出一个字符串,字符串中字符的顺序请参考以上说明。

输入范例

Aabb

输出范例

bbAa

实现思路

遍历输入的字符串,用unordered_map来统计字母的频率。统计完后将unordered_map里的元素存入一个数组,对该数组进行排序,然后就可以用一个string来存最终结果并输出。

实现代码
#include <iostream>#include <vector>#include <string>#include<algorithm>#include<unordered_map>using namespace std;bool cmp(const pair<char,int>&a,const pair<char,int>&b){if(a.second==b.second) return a.first<b.first;else return a.second>b.second;
}class Solution {
public:string frequencySort(string s) {unordered_map<char,int>mp;for(int i = 0;i<s.size();i++){mp[s[i]]++;}vector<pair<char,int>> res;for(auto it:mp){res.push_back(it);}sort(res.begin(),res.end(),cmp);string resstr = "";for(int i = 0;i<res.size();i++){for(int j = 0;j<res[i].second;j++){resstr += res[i].first;}}return resstr;}
};int main(){string str;cin>>str;string res=Solution().frequencySort(str);cout<<res;return 0;}

http://www.dtcms.com/a/321949.html

相关文章:

  • 【Bellman负环】Cycle Finding
  • (0️⃣基础)程序控制语句(初学者)(第3天)
  • 调用API接口返回参数缺失是什么原因导致的?
  • [3D数据存储] 对象 | OObject | IObject | 属性 | O<类型>Property | I<类型>Property
  • 安全基础DAY2-等级保护
  • linux-文件系统
  • AD8032ARZ-REEL7 ADI亚德诺 运算放大器 集成电路IC
  • 阿拉伯文识别技术:为连接古老智慧与数字未来铺设了关键道路
  • scratch笔记和练习-第11课:穿越峡谷
  • Cell-cultured meat: The new favorite on the future dining table
  • AR眼镜:能源行业设备维护的“安全守护者”
  • Shell脚本实现自动封禁恶意扫描IP
  • 考研复习-计算机组成原理-第四章-指令系统
  • nvm安装低版本的node失败(The system cannot find the file specified)
  • Mysql 如何使用 binlog 日志回滚操作失误的数据
  • 系统构成与 Shell 核心:从零认识操作系统的心脏与外壳
  • 物联网电能表在企业能耗监测系统中的应用
  • 人工智能与交通:出行方式的革新
  • Android 监听task 栈变化
  • 基于R语言,“上百种机器学习模型”学习教程 | Mime包
  • qt qtablewidget自定义表头
  • ubantu20.04 orin nx 显示器驱动
  • 【C++】类和对象--类中6个默认成员函数(2) --运算符重载
  • 【C#】掌握并发利器:深入理解 .NET 中的 Task.WhenAll
  • Docker容器部署前端Vue服务
  • 复杂路况误报率↓78%!陌讯轻量化模型在车辆违停识别的边缘计算优化​
  • 2025-08-08 李沐深度学习11——深度学习计算
  • 位置编码——RoPE篇
  • 机器学习算法篇(七)深入浅出K-means算法:从原理到实战全解析
  • 【深度学习新浪潮】近三年3DGS在大规模场景重建中的研究进展(2022-2025)