200字
Leetcode-异位字符串
2021-04-05
2025-10-29
给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。 说明: 字母异位词指字母相同,但排列不同的字符串 。 不考虑答案输出的顺序 。
输入 s : “cbaebabacd” p : “abc” 输出 [ 0 , 6 ] 解释: 起始索引等于 0 的子串是 “cba”, 它是“abc” 的字母异位词 起始索引等于 6 的子串是 “bac”, 它是 “abc” 的字母异位词 。
public List<List<String>> groupAnagrams(String[] strs) {
    //返回值是List List里面是List 装的String  定义一个HashMap 值为List
    Map<String, List> map = new HashMap<String, List>();
    for (String i : strs) {
        char[] arr = i.toCharArray();
        Arrays.sort(arr);
        String str = String.valueOf(arr);

        if (!map.containsKey(str)) {
            //若不存在建立映射关系 排序后的字符串—>新的List集合(装未排序的异位词)
            map.put(str, new ArrayList());
        }
        //建立映射关系户后添加 以及存在映射关系后添加单词
        map.get(str).add(i);
    }
    //返回值是List集合 通过构造器 构造一个包含指定 collection 的元素的列表
    return new ArrayList(map.values());
}
Leetcode-异位字符串
作者
Administrator
发表于
2021-04-05
License
CC BY-NC-SA 4.0

评论