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