Given an array of strings, group anagrams together.
Example:
Input: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
Output:
[
[“ate”,“eat”,“tea”],
[“nat”,“tan”],
[“bat”]
]
Note:
All inputs will be in lowercase.
The order of your output does not matter.
题目解析:
同一单词归类:
字母出现次数和类型相同,字母出现顺序不一致,视为同一单词;
解法:
1.对字母进行排序,同一单词,进行排序,肯定是相同的,作为Key存入HashMap,对应单词存入此Key对应的List即可;
2.遍历Key值,将对应List取出来,合并到一起,即为结果。
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> result = new ArrayList<>();
Map<String,List<String>> hashMap = new HashMap<>();
for (String str : strs){
String temp = str;
char[] chars = temp.toCharArray();
Arrays.sort(chars);
String key = new String(chars);
if (hashMap.containsKey(key)){
hashMap.get(key).add(str);
}else {
List<String> stringList = new ArrayList<>();
stringList.add(temp);
hashMap.put(key,stringList);
}
}
for (String str : hashMap.keySet()){
List<String> value = hashMap.get(str);
Collections.sort(value);
result.add(value);
}
return result;
}
}
性能:
总结:
此题解法还是比较简单的,利用HashMap和单词字母排序即可解决问题。坚持是件不易的事情,加油面对各种挑战,共勉!