凝脂如玉,花颜月貌:探寻“白嫩饱满虎白高耸紧致”的东方美韵
题目解析核心思路字母异位词的特征相同字母组成的不同单词排序后会得到相同的字符串使用排序字符串作为哈希键将每个单词排序后作为分组的唯一标识哈希表存储分组键是排序后的字符串值是对应的原始字符串列表
先创建一个哈希表用于存储分组键是排序后的字符串值是包含原始字符串的列表
将字符串转换为字符数组再排序将排序后的字符串作为键
使用getOrDefault获取对应的列表不存在则创建新列表
将当前字符串添加到列表中
更新HashMap将列表与hash表建立映射class Solution { public ListListString groupAnagrams(String[] strs) { MapString, ListString hash new HashMapString, ListString(); for (String str : strs) { char[] array str.toCharArray(); Arrays.sort(array); String key new String(array); ListString list hash.getOrDefault(key, new ArrayListString()); list.add(str); hash.put(key, list); } return new ArrayListListString(hash.values()); } }char[] array str.toCharArray();作用将字符串转换为字符数组返回char[] 字符数组示例eat → [e,a,t]Arrays.sort(array);作用对字符数组进行升序排序原地修改直接修改原数组不返回新数组排序后[e,a,t] → [a,e,t]ListString list hash.getOrDefault(key, new ArrayListString());作用获取指定key对应的值如果不存在返回默认值参数1key - 要查找的键参数2defaultValue - key不存在时返回的默认值返回key对应的值或默认值优点避免空指针检查代码简洁hash.put(key, list);作用将键值对放入HashMap如果key存在更新对应的value如果key不存在添加新的键值对返回key先前关联的值如果没有则返回nullhash.values()作用返回HashMap中所有值的集合视图返回类型CollectionV特点返回的是视图不是新集合修改会影响原Mapnew ArrayList(collection)new ArrayListListString(hash.values())作用使用集合初始化新的ArrayList参数一个集合Collection特点创建新列表包含参数集合的所有元素
520886美国板-520886美国板应用