传送门

解题思路:

  • 用哈希表的方法来做,用 map 来存储字母相同的单词;

  • 将每一个单词的字母排序后用作 key, 保证相同字母的单词的 key相同,遍历一次数组即可将所有字母相同的单词放在同一 key 中;

图解:

复杂度:

  • 时间复杂度:O(nklogk),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度;需要遍历 n 个字符串,对于每个字符串,需要 O(klogk) 的时间进行排序以及 O(1) 的时间更新哈希表,因此总时间复杂度是 O(nklogk);

  • 空间复杂度:O(nk),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度,需要用哈希表存储全部字符串;

代码实现:

TS
JS
function groupAnagrams(strs: string[]): string[][] {
  let map: Map<string, Array<string>> = new Map();

  for (let i = 0; i < strs.length; i++) {
    // 将字母排序后用作 map key,如 'eve' => 'eev', 'vee' => 'eev'
    let key = strs[i].split("").sort().join("");

    if (!map.has(key)) {
      map.set(key, []);
    }
    map.get(key).push(strs[i]);
  }

  return [...map.values()];
}
var groupAnagrams = function (strs) {
    let map = new Map();

    for (let i = 0; i < strs.length; i++) {
        // 将字母排序后用作 map key,如 'eve' => 'eev', 'vee' => 'eev'
        let key = strs[i].split('').sort().join('');

        if (!map.has(key)) {
            map.set(key, []);
        }
        map.get(key).push(strs[i]);
    }

    return [...map.values()];
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 传送门
  2. 2. 解题思路:
  3. 3. 图解:
  4. 4. 复杂度:
  5. 5. 代码实现: