class Solution {
public List groupAnagrams(String[] strs) {
Map ans = new HashMap();
for (String s : strs) {
int[] count = new int[26];
// Count frequency of each letter in the string
for (char c : s.toCharArray()) {
count[c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for (int num : count) {
sb.append(num).append("#");
}
String key = sb.toString();
if (!ans.containsKey(key)) {
ans.put(key, new ArrayList());
}
ans.get(key).add(s);
}
return new ArrayList(ans.values());
}
}
В этом коде, в чем необходимость преобразования числа массивов в StringBuilder и последующего сохранения его в качестве ключа?
Почему я не могу сохранить int[] в качестве ключа в Java HashMap?>
Я решал проблему «Групповая анаграмма» в leetcode (Java). И вот мое решение: [code]class Solution { public List groupAnagrams(String[] strs) { Map ans = new HashMap();
for (String s : strs) { int[] count = new int[26];
// Count frequency of each letter in the string for (char c : s.toCharArray()) { count[c - 'a']++; }
StringBuilder sb = new StringBuilder(); for (int num : count) { sb.append(num).append("#"); } String key = sb.toString(); if (!ans.containsKey(key)) { ans.put(key, new ArrayList()); } ans.get(key).add(s); }
return new ArrayList(ans.values()); } } [/code] В этом коде, в чем необходимость преобразования числа массивов в StringBuilder и последующего сохранения его в качестве ключа? Почему я не могу сохранить int[] в качестве ключа в Java HashMap?>