1. LeetCode49题目链接链接
https://leetcode-cn.com/problems/group-anagrams/
2. 结题思路
该题主要是为了把使用相同字母组成的字符串放到同一个list中,这样的话,我们可以将string转为字符数组,然后给数组排序,如果相同的话,可以确定该字符为字母异位词。并维护一个Map,排序后的结果是唯一的,可以当做key,然后我们遍历给定的字符串,如果等于这个key的话,就加入到value中,最终map的values就是我们需要的结果。
public static List<List<String>> sortChars(String[] strs) {
List<List<String>> data = new ArrayList();
Map<String, List<String>> strMap = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
char[] chars = strs[i].toCharArray();
System.out.println(chars);
Arrays.sort(chars);
System.out.println(chars);
String key = String.valueOf(chars);
if (!strMap.containsKey(key)) {
strMap.put(key, new ArrayList());
}
strMap.get(key).add(strs[i]);
}
data.addAll(strMap.values());
return data;
}
网友评论