
根据字母异位词的定义,可知:所有字母异位词经过排序之后得到的字符串相同,所以可以定义一个哈希表,将排序后的字符串当作哈希表的键,哈希表的值则用来存储该字母异位词对应的所有字符串,最后将哈希表的值返回即可。
java代码如下:
- class Solution {
- public List
> groupAnagrams(String[] strs) {
- Map
> map = new HashMap<>(); - for(String str : strs){
- char[] array = str.toCharArray();//将字符串转化成字符数组,方便排序
- Arrays.sort(array);
- String key = new String(array);//将排序后的字符数组转回字符串,当作哈希表的键
- List
list = map.getOrDefault(key,new ArrayList());//从哈希表取出当前键对应的值,若无则默认返回一个数组列表 - list.add(str);//将当前字符串加入数组列表
- map.put(key,list);
- }
- List
> ans = new ArrayList<>(map.values());
- return ans;
- }
- }