451. Sort Characters By Frequency

2018/05/21 leetcode 共 931 字,约 3 分钟

title

problem link

题目与link类似

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.

solution


class Solution {
public:
	string frequencySort(string s) {
		unordered_map<char, int> map1;
		for (char c : s) {
			map1[c]++;
		}
		vector<vector<char>> v(s.length() + 1);
		for (auto it : map1) {
			v[it.second].push_back(it.first);
		}
		string res = "";
		for (int i = v.size() - 1; i >= 0; i--) {
			for (char c : v[i]) {
				for(int j=0;j<i;j++)
					res += c;
			}
		}
		return res;
	}
};

Search

    Table of Contents