Sort Characters By Frequency

    xiaoxiao2021-04-17  30

    题目:Sort Characters By Frequency

    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. 解析:可以使用排序把字符进行一遍快排,当然时间复杂度时O(nlogn)

               这里使用二次hash结构,第一次统计每种字符出现的次数,第二次以出现的次数作为下标,来表示出现次数与对应字符串,以出现次数从大到小输出字符串即可

    代码:

    class Solution { public: string frequencySort(string s) { int table[266]; for (int i=0; i<266; i++) { table[i]=0; } for (int i=0; i<s.size(); i++) { table[s[i]]++; } vector<string>ttable(s.size()+1,""); for (int i=0; i<256; i++) { ttable[table[i]].append(table[i],char(i)); } string ans=""; for (int i=s.size(); i>=0; i--) { ans.append(ttable[i]); } return ans; } };

    转载请注明原文地址: https://ju.6miu.com/read-673252.html

    最新回复(0)