当前位置: 首页 > news >正文

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

目录

题目描述

解题思路

代码分析

步骤说明

图解原理

优势分析

小结


 

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

题目描述

给定两个字符串 st,请判断是否为字母组(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. 长度判断:如果 st 的长度不等,直接返回 false

  2. Map 统计

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

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

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

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


图解原理

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

第 1 次:s[0] = 'a' → map[a] = 1t[0] = 'n' → map[n] = -1第 2 次:s[1] = 'n' → map[n] = 0t[1] = 'a' → map[a] = 0第 3 次:s[2] = 'a' → map[a] = 1t[2] = 'g' → map[g] = -1第 4 次:s[3] = 'g' → map[g] = 0t[3] = 'a' → map[a] = 0第 5 次:s[4] = 'r' → map[r] = 1t[4] = 'r' → map[r] = 0第 6 次:s[5] = 'a' → map[a] = 1t[5] = 'a' → map[a] = 0第 7 次:s[6] = 'm' → map[m] = 1t[6] = 'm' → map[m] = 0

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


优势分析

  • 时间复杂度: O(n)

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

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


小结

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

相关文章:

  • DeepSeek智能时空数据分析(三):专业级地理数据可视化赏析-《杭州市国土空间总体规划(2021-2035年)》
  • 宁德时代25年时代长安动力电池社招入职测评SHL题库Verify测评语言理解数字推理真题
  • Matlab数字信号处理——小波阈值法去噪分析系统
  • spreadsheet 之websheet
  • Python在AI虚拟教学视频开发中的核心技术与前景展望
  • JUC多线程:读写锁
  • Pycharm(十六)面向对象进阶
  • python21-循环小作业
  • YOLOv8环境安装(超细全过程)
  • LeetCode -- Flora -- edit 2025-04-25
  • C++入侵检测与网络攻防之暴力破解
  • 项目笔记1:通用 Service的常见方法
  • 通讯录完善版本(详细讲解+源码)
  • 什么是财务管理系统?一文看清其功能及作用!
  • 【AI落地应用实战】借助 Amazon Q 实现内容分发网络(CDN)CDK 构建的全流程实践
  • 腾讯一面面经:总结一下
  • 玉米产量遥感估产系统的开发实践(持续迭代与更新)
  • 《人月神话》50周年遇到AI-那些乐趣和苦恼(01-03)
  • CF-Hero:自动绕过CDN找真实ip地址
  • 计算机组成原理第二章 数据的表示和运算——2.1数制与编码
  • 财政部:前3月国有企业利润总额10907.4亿元,同比增1.7%
  • 文昌市委原书记龙卫东已任海南省人社厅党组书记
  • 传染病防治法修订草案:拟加强医疗机构疾病预防控制能力建设
  • 韩国首尔江南区一大型商场起火,消防部门正在灭火中
  • 全国党委和政府秘书长会议在京召开,蔡奇出席并讲话
  • 人民日报整版聚焦第十个“中国航天日”:星辰大海,再启新程