
解法
前面看hash用法刚好看到判断是否是字母异位词的方法,就是使用数组记录每个字符出现的次数,但这个题还是没写好,因为没想清楚这种情况下求出count以后,怎么比较是否相同的问题,这里是将count数组转为字符串,有点压缩字符串那味了。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
Map<String, List<String>> strMap = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
String s = strs[i];
int[] count = new int[26];
for (int j = 0; j < s.length(); j++) {
count[s.charAt(j) - 'a']++;
}
// count转字符串计数
StringBuilder sb = new StringBuilder();
for (int k = 0; k < count.length; k++) {
if (count[k] != 0) {
sb.append((char)'a' + k);
sb.append(count[k]);
}
}
String key = sb.toString();
List<String> temp = strMap.getOrDefault(key, new ArrayList<>());
temp.add(s);
strMap.put(key, temp);
}
return new ArrayList<List<String>>(strMap.values());
}
}
网友评论