给定一个字符串 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());
}