LC 49 Group Anagrams
- Implementation
- Tests
// 49. Group Anagrams
// Given an array of strings strs, group the anagrams together. You can return the answer in any order.
// Example 1:
// Input: strs = ["eat","tea","tan","ate","nat","bat"]
// Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
// Explanation:
// There is no string in strs that can be rearranged to form "bat".
// The strings "nat" and "tan" are anagrams as they can be rearranged to form each other.
// The strings "ate", "eat", and "tea" are anagrams as they can be rearranged to form each other.
// Example 2:
// Input: strs = [""]
// Output: [[""]]
// Example 3:
// Input: strs = ["a"]
// Output: [["a"]]
// Constraints:
// 1 <= strs.length <= 104
// 0 <= strs[i].length <= 100
// strs[i] consists of lowercase English letters.
const groupAnagrams = (strs) => {
const map = new Map();
for (const str of strs) {
const freq = new Array(26).fill(0);
for (const ch of str) {
freq[ch.charCodeAt(0) - 97]++;
}
const key = freq.join('');
if (!map.has(key)) {
map.set(key, []);
}
map.get(key).push(str);
}
return [...map.values()];
};
console.log(groupAnagrams(["eat","tea","tan","ate","nat","bat"]));
console.log(groupAnagrams([""]));
console.log(groupAnagrams(["a"]));
// Test stub for 05.49.GroupAnagrams
describe('05.49.GroupAnagrams', () => {
it('should have a test stub', () => {
expect(true).toBe(true);
});
});