Re: [閒聊] 每日LeetCode

作者: Rushia (みけねこ的鼻屎)   2022-10-28 10:02:21
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());
}
}
芒果假面
作者: sustainer123 (caster)   2022-10-28 10:08:00
大師
作者: plzza0cats (西黑百夫長)   2022-10-28 10:33:00
每天刷可以跳槽去咕嚕嚕了
作者: Jaka (Jaka)   2022-10-28 10:41:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com