LeetCode : Sort Characters By Frequency
2016-12-01 17:22
423 查看
Solution 1 - O(nlogn)
先把字符串排序,再统计次数。string frequencySort(string s) { if (s.length() < 3) return s; sort(s.begin(), s.end()); // 把s中的字符排序,相同的字符放在一起 vector<string> rec(s.length()); // 对s中的每个字符计数 int num = 1, begin = 0; for (int i = 1; i <= s.size(); i++) { if (s[i] != s[i - 1])// 和前一个不同则将前一个字符保存,后面的重新开始计数 { rec[num - 1] += s.substr(begin, num); begin = i; num = 1; continue; } num++; // 和前一个字符相同则计数加1 } rec[num - 1] += s.substr(begin, num); string result = ""; for (int i = rec.size() - 1; i >= 0; i--) result += rec[i]; return result; }
Solution 2 - O(n)
通过map来统计频率string frequencySort(string s) { if (s.length() < 3) return s; // 用map统计频率 (字符做键) unordered_map<char, int> rec; for (int i = 0; i < s.size(); i++) rec[s[i]] ++; // 把map转移到vector中(频率做键) vector<string> vRec(s.size()); for (auto it : rec) vRec[it.second - 1].append(it.second, it.first); // 按照频率依次加到结果中 string result = ""; for (int i = vRec.size() - 1; i >= 0; i--) result += vRec[i]; cout << result << endl; return result; }
相关文章推荐
- Leetcode Sort Characters By Frequency
- leetcode 451 Sort Characters By Frequency C++
- 算法分析与设计——LeetCode Problem.451 Sort Characters By Frequency
- LeetCode Sort Characters By Frequency
- [LeetCode] Sort Characters By Frequency 根据字符出现频率排序
- LeetCode Sort Characters By Frequency
- Leetcode_451 Sort Characters By Frequency
- [LeetCode]Sort Characters By Frequency
- leetcode-451-Sort Characters By Frequency
- 【LeetCode-451】Sort Characters By Frequency
- [LeetCode] Sort Characters By Frequency(Java)
- leetcode题目: Sort Characters By Frequency 的C语言解法
- 频数相关的leetcode:451 Sort Characters By Frequency& 347 Top K Frequent Elements
- Leetcode: Sort Characters By Frequency
- LeetCode-Q451-Sort Characters By Frequency
- Leetcode 451 Sort Characters By Frequency
- leetcode-Sort Characters By Frequency(基数排序实现)
- Leetcode 451 Sort Characters By Frequency
- sort-characters-by-frequency
- 451. Sort Characters By Frequency