精華區beta Marginalman 關於我們 聯絡資訊
49. Group Anagrams 給予一個字串陣列,依據「每個字母的數量」對每個字串進行分組。 Example: Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]] 思路: 1.對於strs的每個字串s進行遍歷並統計s的字母數量。 2.把{字母+字母數量}當成HashMap的key就可以對每個字串分組了,因為可能會有 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"這種字串所以字母數量大於0我們才串接 效率比較高。 3.把Map裡面的values返回就行 JavaCode: class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> map = new HashMap<>(); for(String s : strs){ int[] count = new int[26]; for(char c : s.toCharArray()) count[c - 'a']++; StringBuilder sb = new StringBuilder(); for(int i = 0; i < count.length; i++) { if(count[i] > 0) sb.append('a' + i).append(count[i]); } String key = sb.toString(); if (!map.containsKey(key)) map.put(key, new ArrayList<>()); map.get(key).add(s); } return new ArrayList<>(map.values()); } } 芒果假面 -- https://i.imgur.com/7bZXdBG.jpg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.87.14 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1666922543.A.093.html ※ 編輯: Rushia (1.160.87.14 臺灣), 10/28/2022 10:03:21
sustainer123: 大師 10/28 10:08
plzza0cats: 每天刷可以跳槽去咕嚕嚕了 10/28 10:33
Jaka: 大師 10/28 10:41