哈希-字母异位词分组
- 人工智能
- 2025-09-09 16:00:02

字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
输入:字符串数组strs 输出:二维列表 思路:计数法,使用有效的字母异位词对每一个字符串进行操作,得到 的整型数组进行比较,如果相同则表示是字母异位词,然后将其整合在一起,使用hash表键值映射,详细请看Java数据结构—HashMap(哈希表及其基本操作)(含hashset)
class Solution { public List<List<String>> groupAnagrams(String[] strs) { //定义哈希表 Map<String,List<String>> map = new HashMap<>(); //循环strs for(String str : strs){ //定义长度为26的整型数组用来存储每个字符出现的次数 int[] counts = new int[26]; //遍历字符串 for(char s : str.toCharArray()){ counts[s - 'a']++; } //拼接字符串,作为哈希表的键 StringBuilder sb = new StringBuilder(); for(int i = 0;i < 26;i++){ if(counts[i] != 0){ sb.append((char)('a' + i)).append(counts[i]); } } //转换为String String key = sb.toString(); //这个还在循环里面 List<String> list = map.getOrDefault(key,new ArrayList<>()); list.add(str); //把键值对存入map map.put(key,list); } //返回所有的哈希表中的值 return new ArrayList<>(map.values()); } }这里不能直接使用
return map.values();
Line 30: error: incompatible types: Collection<List<String>> cannot be converted to List<List<String>> return map.values();虽然 map.values() 返回的集合已经包含了所有值,但它是一个 Collection 类型,而不是 List 或 ArrayList。为了满足特定需求(如随机访问、封装性等),我们需要将其转换为 ArrayList。因此,代码中使用 new ArrayList<>(map.values()) 是一种更安全、更灵活的做法。
哈希-字母异位词分组由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“哈希-字母异位词分组”