给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
思路:注意,看到这种分组类问题,一定要想到数据结构map,因为map可以很好的完成我们要进行类别统计的任务,也可以根据k分类不同的value。
其实,很直观的解法是暴力解法,我们可以遍历每一个字符串数组中的字符串,然后用int数组统计里面字母以及字母的个数。将这个数组和list中的每一个数组比较,如果相等,就将其存入到本次相比的列表中,如果不等就继续循环,如果一直到循环结束还没找到相等的,那就说明目前列表中不存在该字符串的字母异位词,就将该字符串自己作为一个列表存入到大列表中。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs.length == 0){
return new ArrayList<List<String>>();
}
if(strs.length == 1){
ArrayList<String> l = new ArrayList<>();
l.add(strs[0]);
List<List<String>> l1 = new ArrayList<List<String>><