当前位置: 代码迷 >> 综合 >> LeetCode 49. Group Anagrams
  详细解决方案

LeetCode 49. Group Anagrams

热度:87   发布时间:2024-01-30 04:01:10.0

首先初始化 key = "0#0#0#0#0#",数字分别代表 abcde 出现的次数,# 用来分割。

这样的话,"abb" 就映射到了 "1#2#0#0#0"。

"cdc" 就映射到了 "0#0#2#1#0"。

"dcc" 就映射到了 "0#0#2#1#0"。

代码如下:

class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// Corner case
if(strs.length == 0){
return new ArrayList<>();
}
Map<String, List<String>> map = new HashMap<>();
for(String str: strs){
int[] count = new int[26];
//We must use toCharArray() method here
for(char c: str.toCharArray()){
count[c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 26; i++){
sb.append(count[i]);
sb.append('#');
}
String stringKey = sb.toString();
if(map.containsKey(stringKey)){
map.get(stringKey).add(str);
}else{
List<String> anagram = new ArrayList<>();
anagram.add(str);
map.put(stringKey, anagram);
}
}
return new ArrayList<>(map.values());
}
}

  相关解决方案