
字母异位词:字母组成、个数相同,顺序不同
利用哈希表对字母异位词进行分组遍历输入数组中的每个字符串,将其字符排序后生成唯一键,通过该键在哈希表中查找对应分组,若不存在则创建新分组,最终返回哈希表中所有分组结果。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//创建HashMap用于分组
Map<String,List<String>> hash = new HashMap<>();
//遍历String[] 转为char[]数组 Arrays.sort()排序
for(String str : strs) {
char[] array = str.toCharArray();
Arrays.sort(array);
//排序后的char[] 转回为str 即为key
String key = new String(array);
//依据key 将value存入HashMap中
if(hash.get(key) == null) { //若HashMap中没有对应的key 则说明是第一次出现该类型的单词 先put一个元素
hash.put(key,new ArrayList()); //此时key对应的 value(字符串数组)暂时为空
}
hash.get(key).add(str); //先取出ArrayList 再添加str
}
return new ArrayList<>(hash.values()); //hash.values取出所有的value
}
}
825



被折叠的 条评论
为什么被折叠?



