我是靠谱客的博主 慈祥金针菇,最近开发中收集的这篇文章主要介绍451. Sort Characters By Frequency(python+cpp),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
题目:
Given a string, sort it in decreasing order based on the frequency of characters.
Example 1:Input: "tree" Output: "eert" Explanation: 'e' appears twice while 'r' and 't' both appear once. So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
Example 2:
Input: "cccaaa" Output: "cccaaa" Explanation: Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer. Note that "cacaca" is incorrect, as the same characters must be together.
Example 3:
Input: "Aabb" Output: "bbAa" Explanation: "bbaA" is also a valid answer, but "Aabb" is incorrect. Note that 'A' and 'a' are treated as two different characters.
解释:
先统计,再根据出现的频率排序。
在python中需要用item()
函数把字典键值对转成元组,在c++中需要转成pair 数组,而且要自己实现一下排序函数。
python代码:
from collections import Counter
class Solution(object):
def frequencySort(self, s):
"""
:type s: str
:rtype: str
"""
_dict=Counter(s)
sort_dict=sorted(_dict.items(),key=lambda item:item[1],reverse=True)
result=''
for item in sort_dict:
result+=item[0]*item[1]
return result
c++代码:
#include <map>
using namespace std;
class Solution {
public:
string frequencySort(string s) {
map<char,int> _map;
for(auto letter:s)
_map[letter]+=1;
//把map转换成数组
vector<pair<char, int>> map_list(_map.begin(),_map.end());
sort(map_list.begin(),map_list.end(),cmp);
string result="";
for (auto item :map_list)
{
string tmp(item.second, item.first);
result+=tmp;
}
return result;
}
static bool cmp(const pair<char, int>& item1,const pair<char, int>& item2)
{
return item1.second>item2.second;
}
};
总结:
python中,d.items()
实际上是将d转换为可迭代对象,迭代对象的元素为(‘lilee’,25)、(‘wangyan’,21)、(‘liqun’,32)、(‘lidaming’,19),items()
方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数(如果写作key=lambda item:item[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。lambda x:y中x表示输入参数,y表示lambda函数的返回值),所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个list,而原字典中的键值对对被转换为了list中的元组。
最后
以上就是慈祥金针菇为你收集整理的451. Sort Characters By Frequency(python+cpp)的全部内容,希望文章能够帮你解决451. Sort Characters By Frequency(python+cpp)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复