LeetCode—49. Group Anagrams
题目
https://leetcode.com/problems/group-anagrams/description/
给出一个字符串数组,将其中字符相同的字符串归为相同的类别,不考虑字符出现的顺序,只需字符相同即可。返回最终的分类结果。
思路及解法
首先想到能够使用hashmap解决这个问题。然后考虑key和value是什么,我们要把字符相同的字符串放到一起,所以value就可以是一个string的list,装载分组相同的字符串;key我们使用排序sort过的对应字符,注意要转换为string。
代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
int strNum = strs.length;
HashMap<String, List<String>> hm = new HashMap<>();
for(int i=0; i<strNum; i++){
char[] c = strs[i].toCharArray();
Arrays.sort(c); //排序
String key = String.valueOf(c); //转换为string
if(!hm.containsKey(key)) hm.put(key, new ArrayList<String>());
hm.get(key).add(strs[i]);
}
return new ArrayList<List<String>>(hm.values());
}
}