题目链接
思路
哈希,map中对应的键值对为:排序过的String: 异位词String
因为不同字母的ASCII码大小不同,我们可以根据这个特性将一个String转换成一个字母数组之后对这个数组进行排序,如果是由相同字母组成的字符串,那么排序后的结果一定是一致的,因此可以将其视为一个字母异位词,我们只需要判断排序过后组成的新字符串是否在map中即可进行后续操作
代码
java
class Solution {
//map: 有序String: 当前String
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap<>();
for(String key: strs) {
char[] chars = key.toCharArray();
Arrays.sort(chars);
String sortedString = new String(chars);
if(map.containsKey(sortedString)) {
map.get(sortedString).add(key);
map.put(sortedString, map.get(sortedString));
} else {
List<String> list = new ArrayList<>();
list.add(key);
map.put(sortedString, list);
}
}
return new ArrayList<>(map.values());
}
}