【LeeCode Hot100】字母异位词分组

字母异位词分组

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例

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

代码

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for(String str : strs){
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String (array);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());

笔记

首先,方法初始化了一个HashMap对象map,用于存储分组后的字符串列表,其中键为经过排序后的字符串,值为具有相同排序后字符串的原始字符串列表。
接下来,方法使用for-each循环遍历输入的字符串数组strs。
对于每个字符串str,方法首先将其转换为字符数组array。
然后,方法使用Arrays.sort()对字符数组array进行排序,以确保具有相同字母但顺序不同的字符串会被归类到同一个分组中。
接着,方法将排序后的字符数组array转换回字符串,并将其作为键key。
然后,方法使用map.getOrDefault()方法获取键为key的值,如果该键不存在,则创建一个新的空列表。
将原始字符串str添加到获取到的列表中。
最后,将更新后的值放回到map中。
完成对所有字符串的处理后,方法返回map.values(),即所有分组的列表,作为结果。

  1. Map<String, List>: 这部分指定了map变量的类型。它是一个键为字符串、值为字符串列表的映射(或者称为字典)。
  2. 在Java中,Map表示键值对的集合,而String表示字符串类型,List表示字符串的列表。
  3. List 是 Java 中的一种数据结构,它表示一个字符串类型的列表。在 Java 中,List 是一种接口,它表示一组按顺序排列的元素的集合。List 接口的实现类有很多,比如 ArrayList、LinkedList 等,它们提供了不同的操作方法,但都实现了相同的 List 接口。List 中的 表示这个列表中包含的元素类型是字符串类型。这意味着你可以向这个列表中添加字符串,并且在使用时,从列表中取出的元素都将是字符串。
  4. 在Java中,尖括号 <> 和圆括号 () 有不同的作用和含义。尖括号 <>:在泛型中,尖括号用于指定泛型的类型参数。例如,List 中的尖括号 指定了 List 中元素的类型是字符串类型。圆括号 ():在Java中,圆括号用于表示方法调用时的参数列表。例如,System.out.println(“Hello, world!”); 中的圆括号 (“Hello, world!”) 指定了 println 方法的参数。
  5. for (String str : strs)
    这行代码是 Java 中的增强型 for 循环(也称为 for-each 循环),用于遍历数组或集合中的元素。
    String str这部分声明了一个名为 str 的变量,它的类型是字符串(String)。这个变量用于在每次循环迭代中存储数组 strs 中的当前元素。
    :这部分表示“在…中循环遍历”,即将会遍历数组 strs 中的所有元素。
    strs这是一个字符串数组,即被遍历的对象。
  6. char[] array = str.toCharArray();
    这行代码将字符串 str 转换为字符数组 array。
    在 Java 中,String 类有一个名为 toCharArray() 的方法,用于将字符串转换为字符数组。该方法返回一个新的字符数组,其中包含了字符串中的所有字符,字符数组的长度等于字符串的长度,每个字符数组元素对应字符串中的一个字符。
  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值