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.
Python3 Solution:
from collections import defaultdict
class Solution:
def frequencySort(self, s: str) -> str:
dic = defaultdict(lambda: 0) # 创建字典,默认value为0
for ch in s: # 统计字符串中出现的字母及次数
dic[ch] += 1
temp = sorted(dic.items(), key= lambda dic:dic[1], reverse=True)# 根据字母出现次数排序
res = ""
for ch, val in temp: # 重构字符串
res += "".join([ch]*val)
return res