Bootstrap

Leecode刷题—字母异位词分组

Leecode刷题笔记——49. 字母异位词分组

开始刷题,记录一下!!!!!!!!!

题目:

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

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

示例 1:

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

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

示例 2:

输入: strs = [""]

输出: [[""]]

示例 3:

输入: strs = ["a"]

输出: [["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

解题:

public static void main(String[] args) {
        String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        //定义一个map存集合
        HashMap<String, List<String>> map = new HashMap<>();
        for (int i = 0; i < strs.length; i++) {
            //1、取出数组中的字符串,用toCharArray() 方法将字符串转换为字符数组
            char[] temp = strs[i].toCharArray();
            System.out.println("1=" + Arrays.toString(temp));
            //2、字符数组数字排序(排序后的字符数组转成字符串当做map的key)
            Arrays.sort(temp);
            System.out.println("2=" + Arrays.toString(temp));
            //3、用getOrDefault(Object key, V defaultValue)取出key对应的异位词集合
            //意思就是当Map集合中有这个key时,就使用这个key对应的value值,如果没有就使用默认值defaultValue
            List<String> list = map.getOrDefault(new String(temp), new ArrayList<>());
            System.out.println("list1=" + list);
            //4、把未重新排序的原字符串 存入key对应的异位词集合中
            list.add(strs[i]);
            System.out.println("list2=" + list);
            map.put(new String(temp), list);
            System.out.println(new ArrayList<>(map.values()));
        }

    }

;