题目如下:
解题思想:
字母异位词其实就是同一字母的不同排列组合出现的单词,根据提供的字符串进行匹配查找。那么如果解决字母的不同位置呢?hash值可以吗?可以,但是我们的做一下处理,先对字符串进行排序,保证相同字母排序完后的一致性,从而得到的hashcode是一样的。
然后根据map的get、set操作进行逻辑判断即可完成题解。
具体代码实现
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
for (String str : strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
String kk = String.valueOf(chars);// 排序字母顺序
if (map.containsKey(kk)) {
map.get(kk).add(str);
} else {
ArrayList<String> newList = new ArrayList<String>();
newList.add(str);
map.put(kk,newList);
}
}
return new ArrayList<List<String>>(map.values());
}
}
评论区