详解 LeetCode 第 242 题 - 有效的字母组

目录

题目描述

解题思路

代码分析

步骤说明

图解原理

优势分析

小结


码题目:LeetCode 242. 有效的字母组

题目描述

给定两个字符串 s 和 t,请判断是否为字母组(Anagram)。

如果 t 是通过打乱 s 的字符并重新排列所得到的,那么它们是字母组。

例如:

复制代码
输入: s = "anagram", t = "nagaram"
输出: true

输入: s = "rat", t = "car"
输出: false

解题思路

我们需要确认两个字符串是否含有相同的字符,并且各字母出现的次数也相同。

这里使用 JavaScript 中的 Map 类型来统计字母的出现次数是非常有效的方法。


代码分析

复制代码
var isAnagram = function (s, t) {
  if (s.length !== t.length) return false;
  const map = new Map();
  for (let i = 0; i < s.length; i++) {
    map.set(s[i], (map.get(s[i]) || 0) + 1);
    map.set(t[i], (map.get(t[i]) || 0) - 1);
  }
  return Array.from(map.values()).every((value) => value === 0);
};

步骤说明

  1. 长度判断 :如果 s 和 t 的长度不等,直接返回 false。

  2. Map 统计:

    • 通过 for 循环,同时遍历 s[i] 和 t[i]。

    • 将 s[i] 的计数 +1 ,t[i] 的计数 -1。

    • 如果是字母组,那么最后 Map 里所有值必然是 0

  3. 结果判断 :判断 Map 所有 value 是否都等于 0,如果是,则返回 true,否则返回 false。


图解原理

以 s = "anagram", t = "nagaram" 为例,观看 Map 如何变化:

复制代码
第 1 次:
  s[0] = 'a' → map[a] = 1
  t[0] = 'n' → map[n] = -1

第 2 次:
  s[1] = 'n' → map[n] = 0
  t[1] = 'a' → map[a] = 0

第 3 次:
  s[2] = 'a' → map[a] = 1
  t[2] = 'g' → map[g] = -1

第 4 次:
  s[3] = 'g' → map[g] = 0
  t[3] = 'a' → map[a] = 0

第 5 次:
  s[4] = 'r' → map[r] = 1
  t[4] = 'r' → map[r] = 0

第 6 次:
  s[5] = 'a' → map[a] = 1
  t[5] = 'a' → map[a] = 0

第 7 次:
  s[6] = 'm' → map[m] = 1
  t[6] = 'm' → map[m] = 0

最终 map = {a:0, n:0, g:0, r:0, m:0} → 全部值为 0,说明是字母组


优势分析

  • 时间复杂度: O(n)

  • 空间复杂度: O(1)(因为最多字母数量是有限的)

此算法方案相比直接排序字符串后比较的方法而言,更加高效。


小结

该题目是实际中常见的字符组合问题,本解法利用 Map 展现了非常高效的计数思路。推荐在做类似字符组问题时使用。

相关推荐
信奥卷王16 分钟前
[GESP202609 六级] 数组划分
数据结构·算法
牧羊人.33344 分钟前
动手学深度学习 07|Resnet网络与迁移学习
网络·人工智能·深度学习·神经网络·算法·cnn·迁移学习
All for pursuit.2 小时前
【并查集-2】399.除法求值
数据结构·c++·算法·leetcode
迪丽热爱2 小时前
一、C语言概述与程序结构
c语言·开发语言·算法
码爸2 小时前
动态规划介绍
算法·动态规划
怪奇云呼军3 小时前
教育试听预约后没到课,闪电智能 Voice Agent 如何做分层回访?
人工智能·python·算法·云计算·音视频
Nil2083 小时前
leetcode 416分割等和子集
算法·leetcode·职场和发展
云淡风轻~窗明几净3 小时前
角谷猜想的进展之三 移动了群山/沸騰的群山 2026-10-10
人工智能·算法·dubbo·图论
ForeverYang20153 小时前
一种无需训练缺陷数据生成算法--O2MAG
人工智能·深度学习·算法
Pniubi3 小时前
Agent开发:记忆系统中向量存储的合理安排
职场和发展