Re: [閒聊] 每日LeetCode

看板Marginalman作者 (みけねこ的鼻屎)時間3年前 (2022/12/03 13:08), 3年前編輯推噓1(101)
留言2則, 2人參與, 3年前最新討論串125/719 (看更多)
451. Sort Characters By Frequency 給你一個字串s,我們要把他的所有字元依照「每個字元的出現頻率」降序排列。 Example: Input: s = "tree" Output: "eert" Explanation: 'e'出現兩次所以排最前面,'r'和't'出現一次哪個在前面都OK。 思路: 1.用一個Map統計每個字元的出現頻率 2.用一個Heap根據map裡的頻率來排序 3.把heap裡面的元素拿出來append指定次數。 Java Code: --------------------------------------- class Solution { public String frequencySort(String s) { Map<Character, Integer> map = new HashMap<>(); for (char c : s.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); } Queue<Character> queue = new PriorityQueue<>( (o1, o2) -> map.get(o2).compareTo(map.get(o1)) ); for (Map.Entry<Character, Integer> kv : map.entrySet()) { queue.offer(kv.getKey()); } StringBuilder sb = new StringBuilder(); while (!queue.isEmpty()) { char c = queue.poll(); for (int i = 0; i < map.get(c); i++) { sb.append(c); } } return sb.toString(); } } --------------------------------------- -- https://i.imgur.com/3e5CZfj.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1670044080.A.C13.html

12/03 13:09, 3年前 , 1F
大師
12/03 13:09, 1F

12/03 13:09, 3年前 , 2F
大師
12/03 13:09, 2F
※ 編輯: Rushia (122.100.75.86 臺灣), 12/03/2022 13:11:31
文章代碼(AID): #1ZYjcmmJ (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZYjcmmJ (Marginalman)