潜江市网站建设_网站建设公司_后端工程师_seo优化
2026/1/5 21:11:55 网站建设 项目流程

题目描述:

给你一个字符串数组,请你将字母异位词 组合在一起。可以按任意顺序返回结果列表。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]

输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 。"bat"
  • 字符串 和 是字母异位词,因为它们可以重新排列以形成彼此。"nat""tan"
  • 字符串  , 和 是字母异位词,因为它们可以重新排列以形成彼此。"ate""eat""tea"

示例 2:

输入: strs = [""]

输出: [[""]]

1、排序

image

  • 需要先判断哈希表里有没有key,没有key——>key+新数组插入哈希put。
  • 如果像注释写的那样,先判断在 ——>插入value,再新建会导致key下面所有的数组都是新建的空数组(覆盖了)
  • 先新建后插入
 1 class Solution {
 2     public List<List<String>> groupAnagrams(String[] strs) {
 3         if(strs.length == 0)return new ArrayList();
 4         Map<String, List> ans = new HashMap<String, List>();
 5         for(String s:strs){
 6             char[] ca = s.toCharArray();
 7             Arrays.sort(ca);
 8             String key = String.valueOf(ca);
 9             // if(ans.containsKey(key))ans.get(key).add(s);   错误写法
10             // ans.put(key,new ArrayList());
11             if(!ans.containsKey(key))ans.put(key, new ArrayList());
12             ans.get(key).add(s);
13         }
14         return new ArrayList(ans.values());
15     }
16 }
View Code

 

 

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询