49. Group Anagrams - Medium
前往題目
想法
- 回傳包含
arraylist
的arraylist
- 用
hashmap arraylist
存放每個詞的hashmap
,但這樣會有個問題,假設不是同個詞,那要怎麼新增,用一個temp hashmap
嗎@@
思路
兩種主要方式:
把
string
都sort
過,同一個詞一定會排序相同,就可以成功分類,但執行時間是O(m * nlogn)
,因為有m
個string
,sort
要花nlogn
時間用
hashmap
,<String, List<String>>
,執行時間是O(m * n)
一個
hashmap
疊代全部
string
,數每個字母有幾個根據數出來的結果找尋
key
,沒有就新建,有就加進去
Code
說實話我不懂為何一定要用char[] ca
,感覺int[]
應該也沒問題啊,但用了就會出錯…
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// Map keyString to word
Map<String, List<String>> map = new HashMap<>();
// Loop through each string
for (String s : strs) {
// for counting
char[] ca = new char[26];
// Count the characters
for (char c : s.toCharArray()) {
ca[c - 'a']++;
}
String keyStr = String.valueOf(ca);
if (!map.containsKey(keyStr)) {
// Init.
map.put(keyStr, new ArrayList<String>());
}
// Store the value
map.get(keyStr).add(s);
}
return new ArrayList<>(map.values());
}
}
2024/04/21
- 忽略了最重要的點,同一組的字母分佈數量是一樣的
49. Group Anagrams - Medium
https://f88083.github.io/2023/12/01/49-Group-Anagrams-Medium/