mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-17 15:36:26 +00:00
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
/*
|
|||
|
|
* 49. Group Anagrams
|
||
|
|
* Difficulty: Medium
|
||
|
|
* https://leetcode.com/problems/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 <= 10^4
|
||
|
|
*
|
||
|
|
* • 0 <= strs[i].length <= 100
|
||
|
|
*
|
||
|
|
* • strs[i] consists of lowercase English letters.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param {string[]} strs
|
||
|
|
* @return {string[][]}
|
||
|
|
*/
|
||
|
|
var groupAnagrams = function(strs) {
|
||
|
|
let sorted = strs.map(str => str.split("").sort().join(""));
|
||
|
|
let anagrams = {};
|
||
|
|
|
||
|
|
for (let i = 0; i < strs.length; i++){
|
||
|
|
if(!anagrams[sorted[i]]){
|
||
|
|
anagrams[sorted[i]] = [strs[i]]
|
||
|
|
}else{
|
||
|
|
anagrams[sorted[i]].push(strs[i])
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return Object.values(anagrams);
|
||
|
|
};
|