您的位置:首页 > 产品设计 > UI/UE

451. Sort Characters By Frequency

2017-03-27 20:35 429 查看
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.


Subscribe to see which companies asked this question.
思路:在统计完字符频率之后 利用类似于计数排序的方法 开一个n+1长度的数组, 讲不同频率的索引处 ,然后由高到低取得的所有字符串。

class Solution {
public:
string frequencySort(string s) {
int len =s.size();
unordered_map<char,int> hash;
vector<string> vec(len+1,"");
for(auto ch:s) hash[ch]++;
for(auto val :hash)  vec[val.second].append(val.second, val.first);
string ans;
for (int i = len;i>0;i--)  ans += vec[i];
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: