博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
451. 根据字符出现频率排序
阅读量:4027 次
发布时间:2019-05-24

本文共 753 字,大约阅读时间需要 2 分钟。

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

示例 1:

输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。

示例 2:

输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。

示例 3:

输入:"Aabb"输出:"bbAa"解释:此外,"bbaA"也是一个有效的答案,但"Aabb"是不正确的。注意'A'和'a'被认为是两种不同的字符。

思路:1、先用哈希表统计出每个字符出现的个数。2、用优先队列的自动排序的特点,把个数和字符组成pair放到优先队列里排好序。3、取出来组成结果res即可。

class Solution {public:    string frequencySort(string s) {        unordered_map
m; priority_queue
>q; string re; for(auto c:s) m[c]++; for(auto x:m) q.push({x.second, x.first}); while(!q.empty()){ auto it=q.top(); q.pop(); re+=string(it.first, it.second); } return re; }};

 

转载地址:http://ekobi.baihongyu.com/

你可能感兴趣的文章
K均值算法(K-means)
查看>>
机器学习中的损失函数
查看>>
机器学习中的性能度量
查看>>
机器学习中的优化问题
查看>>
机器学习中的参数估计方法
查看>>
机器学习中的特征工程
查看>>
Softmax数值不稳定问题
查看>>
Spark学习笔记(一)——Spark编程
查看>>
奇异值分解(Singular Value Decomposition, SVD)
查看>>
文本处理—LSA、 LDA
查看>>
文本匹配(Text Matching)
查看>>
机器学习中的正则化方法
查看>>
广告学与在线广告
查看>>
计算广告
查看>>
Web广告--广告定向
查看>>
卷积神经网络中的算术问题(Convolution arithmetic)
查看>>
卷积神经网络在计算机视觉中的演进
查看>>
推荐系统初探
查看>>
分布式机器学习
查看>>
迁移学习(Transfer Learning)
查看>>