-
星空
class Solution(object): def frequencySort(self, s): """ :type s: str :rtype: str """ return ''.join(c * t for c, t in collections.Counter(s).most_common())
-
星空
public class Solution { public String frequencySort(String s) { HashMap<Character, Integer> charFreqMap = new HashMap<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); charFreqMap.put(c, charFreqMap.getOrDefault(c, 0) + 1); } ArrayList<Map.Entry<Character, Integer>> list = new ArrayList<>(charFreqMap.entrySet()); list.sort(new Comparator<Map.Entry<Character, Integer>>(){ public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); StringBuffer sb = new StringBuffer(); for (Map.Entry<Character, Integer> e : list) { for (int i = 0; i < e.getValue(); i++) { sb.append(e.getKey()); } } return sb.toString(); } }
-
星空
class Solution { public: string frequencySort(string s) { unordered_map<char,int> freq; vector<string> bucket(s.size()+1, ""); string res; //count frequency of each character for(char c:s) freq[c]++; //put character into frequency bucket for(auto& it:freq) { int n = it.second; char c = it.first; bucket[n].append(n, c); } //form descending sorted string for(int i=s.size(); i>0; i--) { if(!bucket[i].empty()) res.append(bucket[i]); } return res; } };
-
星空
public class Solution { public String frequencySort(String s) { Map<Character, Integer> map = new HashMap<>(); for (char c : s.toCharArray()) { if (map.containsKey(c)) { map.put(c, map.get(c) + 1); } else { map.put(c, 1); } } List<Character> [] bucket = new List[s.length() + 1]; for (char key : map.keySet()) { int frequency = map.get(key); if (bucket[frequency] == null) { bucket[frequency] = new ArrayList<>(); } bucket[frequency].add(key); } StringBuilder sb = new StringBuilder(); for (int pos = bucket.length - 1; pos >=0; pos--) { if (bucket[pos] != null) { for (char num : bucket[pos]) { for (int i = 0; i < map.get(num); i++) { sb.append(num); } } } } return sb.toString(); } }
-