题目描述
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.
解释
给一个字符串,把字符按照出现的次数排序。所有相同的字母需要连在一起。
思路
用字典统计每个字符的出现次数,然后把字典中的key和value以tuple的形式存到一个list中并以value排序。最后把list中的元素按照出现次数拼成一个字符串即可。
代码
class Solution(object):
def frequencySort(self, s):
"""
:type s: str
:rtype: str
"""
import collections
c = collections.Counter(s)
tup = []
for key in c:
tup.append((key, c[key]))
tup.sort(key = lambda x:x[1], reverse = True)
res = ""
for t in tup:
res += t[0] * t[1]
return res