作者Rushia (みけねこ的鼻屎)
看板Marginalman
標題Re: [閒聊] 每日LeetCode
時間Fri Oct 28 10:02:21 2022
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