451. 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.

代码:
别看题目很长,其实就是: 给定一个字符串,找出里面每个字符出现的频率,按频率从从大到小排序。
想了半天,觉得怎么都是遍历一遍,记录并求出每个字符出现的次数,之后排序。
可是,网上查了一下,才知道python原来是那么的牛B,有这样一个函数:
看举例子就明白了,而且顺序都排好了,是不是很流弊!

aaarticlea/png;base64,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" alt="" />

这个函数在collection模块的Counter类中:

aaarticlea/png;base64,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*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" alt="" />

于是,看似很复杂的题目,用python写只剩一句话了:

class Solution(object):
    def frequencySort(self, s):
        """
        :type s: str
        :rtype: str
        """
        #print (collections.Counter(s).most_common())
        return ''.join(c * num for c, num in collections.Counter(s).most_common())

当然,我总觉得这样自身没什么思考。不过有时候快速开发,解决问题,确实更重要!

上一篇:简单的理解deflate算法


下一篇:Double 保留小数点后N位