【简单】力扣算法题解析LeetCode242:有效的字母异位词

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向 输入可以是任何形式的时间序列数据,其中表示时间。例如传感器读数、金融市场数据、语音信号等。 阅读详情

关注文末推广名片,即可免费获得本题测试源码!

题目链接:LeetCode242:有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 字母异位词指字母相同但排列不同的字符串。

示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true

示例 2:
输入: s = “rat”, t = “car”
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 10^4
  • s 和 t 仅包含小写字母

进阶:
如果输入字符串包含 Unicode 字符怎么办?你能否调整你的解法来应对这种情况?


解题思路

  1. 长度检查:如果两个字符串长度不同,直接返回 false。
  2. 数组方法(仅小写字母):
    • 使用长度为 26 的数组 count 统计每个字符的出现次数。
    • 遍历字符串 s,对每个字符增加计数。
    • 遍历字符串 t,对每个字符减少计数:
      • 如果计数小于 0,说明 t 中该字符出现次数多于 s 中,返回 false。
    • 若遍历完成,则返回 true。
  3. 处理非小写字母(进阶):
    • 若在数组方法中遇到非小写字母,切换到 HashMap 方法:
      • 使用 HashMap 统计 s 中字符出现次数。
      • 遍历 t 减少计数:
        • 若计数小于 0,说明 t 中字符出现次数多于 s 中,返回 false。
      • 若遍历完成,返回 true。

代码实现(Java版)🔥点击下载源码

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        
        int[] count = new int[26];
        // 遍历字符串s,统计字符出现次数
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c < 'a' || c > 'z') {
                return isAnagramWithHashMap(s, t);
            }
            count[c - 'a']++;
        }
        
        // 遍历字符串t,减少字符计数
        for (int i = 0; i < t.length(); i++) {
            char c = t.charAt(i);
            if (c < 'a' || c > 'z') {
                return isAnagramWithHashMap(s, t);
            }
            int index = c - 'a';
            count[index]--;
            if (count[index] < 0) {
                return false;
            }
        }
        return true;
    }
    
    private boolean isAnagramWithHashMap(String s, String t) {
        Map<Character, Integer> map = new HashMap<>();
        // 统计s中字符出现次数
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        // 减少t中字符计数,并检查是否出现负数
        for (int i = 0; i < t.length(); i++) {
            char c = t.charAt(i);
            int currentCount = map.getOrDefault(c, 0) - 1;
            if (currentCount < 0) {
                return false;
            }
            map.put(c, currentCount);
        }
        return true;
    }
}

代码说明

  1. 长度检查:首先比较 s 和 t 的长度,不同则直接返回 false。
  2. 数组方法:
    • 创建长度为 26 的数组 count,对应 26 个小写字母。
    • 遍历 s:
      • 遇到非小写字母时,调用 isAnagramWithHashMap 方法。
      • 否则,将字符转换为索引(c - 'a'),增加计数。
    • 遍历 t:
      • 遇到非小写字母时,调用 isAnagramWithHashMap 方法。
      • 否则,减少对应字符的计数,若计数小于 0,返回 false。
    • 若遍历完成,返回 true。
  3. HashMap 方法:
    • 使用 HashMap 统计 s 中字符出现次数。
    • 遍历 t:
      • 减少字符计数,若计数小于 0(t 中字符多于 s 中),返回 false。
    • 若遍历完成,返回 true。

提交详情(执行用时、内存消耗)

在这里插入图片描述

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM) 迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM) 立即下载

相关推荐

【技术解析】AlexNet——从ReLU到Dropout的深度学习关键突破

本文深入解析AlexNet在深度学习领域的关键突破,重点探讨了ReLU激活函数和Dropout技术的革命性应用。作为卷积神经网络的里程碑,AlexNet通过ReLU解决梯度消失问题,利用Dropout有效防止过拟合,为现代深度学习模型奠定了重要基础。这些创新技术至今仍在计算机视觉和自然语言处理等领域发挥重要作用。

weixin_33719619的博客 272

LeetCode 242:有效的字母异位词

使用数组统计字母出现次数是一种高效的方法,时间复杂度为OnO(n)On。在主函数中,通过多组测试用例验证了代码的正确性。对于字符串操作问题,熟悉字符编码和数组操作尤为重要。希望这篇博客能帮助你理解 LeetCode 242 题的解决方案!💡。

weixin_48941116的博客 1143

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 458

3-哈希表-11-有效的字母异位词-LeetCode242

算法:3-哈希表-11-有效的字母异位词-LeetCode242

weixin_43873121的博客 967

MoveIt控制睿尔曼RM65机械臂:从仿真到实机的3种控制模式对比

本文详细解析了使用MoveIt框架控制睿尔曼RM65机械臂的三种核心模式:拖动规划、目标姿态规划和Python API控制,从Gazebo仿真到实机部署的完整实现路径。通过ROS环境配置、控制参数优化及实机过渡技术,为工业自动化和机器人研究提供实用指南。

727

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

【LeetCode刷题日记】242.字母异位词

本文探讨了如何判断两个字符串是否为字母异位词的问题。通过LeetCode242题为例,提出了一种高效的哈希表解法:使用长度为26的数组记录字符出现次数,遍历第一个字符串时自增对应位置值,遍历第二个字符串时自减,最后检查数组是否全零。该方法时间复杂度O(m+n),空间复杂度O(1),适用于小写字母场景。文章还分析了暴力解法O(n^2)的不足,并详细解释了哈希表映射原理,即通过字符与'a'的ASCII差值确定数组索引位置。最后指出该方法可通过调整扩展到Unicode字符场景。

任岁月风干理想再也找不回真的我 731

氮化镓GaN电机驱动实战:从器件原理到EPC驱动中心

电机驱动是工业自动化和电动交通的核心,功率器件的选择直接决定系统效率与可靠性。传统硅基IGBT和MOSFET在开关速度、损耗方面存在瓶颈,而氮化镓(GaN)作为宽禁带半导体,凭借高电子迁移率、低栅极电荷和近乎为零的反向恢复电荷,正成为电机驱动领域的热门选择。EPC建立电机驱动中心,提供完整的评估平台,覆盖从低压家电到中压伺服的应用场景。文章从GaN器件原理出发,对比传统硅器件,详解三相BLDC/PMSM驱动系统的搭建、栅极驱动与Layout设计、死区时间设置及参数计算实例,并分享测试中遇到的振铃、EMI等高

weixin_29168675的博客 321

LeetCode 242. 有效的字母异位词 java

LeetCode 242. 有效的字母异位词 java 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母。 JAVA 代码: class So...

lele的专栏 644

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

图像增强(Image Enhancement):指不考虑图像降质原因,利用各种数学方法和变换手段,增强图像中人们感兴趣部分或提高有用的图像特征的清晰度。从图像质量来看,图像增强提高了图像的可懂度,改善了图像的视觉效果例如在现实场景中,针对那些对比度较差、视觉效果不好的图像,我们就可以利用图像增强改善视觉质量图像增强可分为如下几种基于灰度级变换的图像增强基于直方图修正的图像增强基于照度反射模型的图像增强基于模糊技术的图像增强基于伪彩色处理的图像增强其他图像增强方法分段线性灰度级变换。

快乐江湖的博客 3331

ESP32 WIFI 智能巡线小车设计与实现(四足 / 四轮通用)

本文设计的 ESP32 WIFI 智能巡线小车,硬件模块化、软件轻量化,兼容四足与四轮两种结构,实现了自动巡线与 WIFI 远程控制双功能。系统成本低、易上手,适合嵌入式初学者学习 WIFI 通信、传感器应用、运动控制等核心知识点,也可在此基础上扩展蓝牙控制、避障、视觉识别等功能。

weixin_42300449的博客 151

代码随想录算法训练营第六天|LeetCode242.有效的字母异位词 LeetCode 349. 两个数组的交集 LeetCode202. 快乐数 LeetCode 1. 两数之和

代码随想录第五天|LeetCode242.有效的字母异位词 LeetCode349. 两个数组的交集 LeetCode202. 快乐数 LeetCode 1. 两数之和

2301_79647020的博客 2398

让 ABAP 开发更聪明的搭档:SAP Joule for Developers 与 ABAP AI Capabilities 全面实战

摘要:SAP已将生成式AI集成到ABAP开发工具中,推出Joule for Developers功能。该功能直接嵌入Eclipse开发环境,提供代码解释、生成、测试构造和遗留代码迁移等辅助功能。Joule支持ABAP Cloud项目开发,能围绕当前开发对象提供上下文相关的建议,帮助开发者高效完成应用开发与迁移任务。启用该功能需升级ADT并获取相应许可,典型应用场景包括RAP应用构建和S/4HANA迁移中的代码重构。官方资源提供了多个实践案例,帮助开发者快速上手这一AI辅助开发功能。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 487

5-1 代码随想录 第三章 哈希表part01 242.有效的字母异位词

给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。

ii_fan的博客 1903

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode242/567.字符串的排列:有效的字母异位词(Kotlin语言)

LeetCode242.有效的字母异位词 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如果输入字符串包含 u...

AI天才研究院 8716

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode 242题 有效的字母异位词

LeetCode 242题 有效的字母异位词 题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 输入: s = “anagram”, t = “nagaram” 输出: true public class isAnagram { public static boolean isAnagram(String s, String t) { ...

Java大数据 493

前端与算法 leetcode 242. 有效的字母异位词

文章目录前端与算法 leetcode 242. 有效的字母异位词题目描述概要提示解析解法一:哈希表解法二:数组判断字符出现次数解法三:转换字符串算法传入测试用例的运行结果执行结果GitHub仓库 前端与算法 leetcode 242. 有效的字母异位词 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagra...

墨抒颖 564

【leetcode】242.有效的字母异位词

目录标题算法汇总题目代码1.解体方法,如二分法思路代码时间和空间复杂度2.解题方法,如暴力法思路代码时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…) 题目 242.有效的字母异位词 字母异位词解释: 简单理解为:两字符串长度相同,字母相同,但顺序不同。 代码 1.解体方法,如二分法 思路 代码 class Solution { public boolean isAnagram(String s, String t) {

qq_43783527的博客 6648

LeetCode 242. 有效的字母异位词:解法解析与时空优化全攻略

本文深入解析LeetCode 242题“有效的字母异位词”,从基础哈希表解法到时空优化进阶。首先解读题目核心定义和隐含条件,分析初始解法的三步逻辑与时空复杂度。重点介绍两个核心优化:提前长度判断减少无效执行,用数组替代Map实现极致空间优化。通过对比三种解法的时空复杂度,展示优化效果。最后提供刷题避坑建议,强调掌握“哈希计数”思想对解决同类问题的重要性。文章指出,这道简单题的价值在于理解优化思路,而非仅写出正确解法。

2401_86788218的博客 858

【算法系列-哈希表】有效的字母异位词

【算法系列-哈希表】有效的字母异位词

Mwt258的博客 1268

leetcode-242 | 有效的字母异位词

title: leetcode-242 | 有效的字母异位词 date: 2019-4-25 17:01:07 comments: true categories: “leetcode” tags: - leetcode 简单难度 242. 有效的字母异位词(Valid Anagram) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例1: 输入: s...

梦否 363

算法学习——LeetCode力扣哈希表篇1(242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和)

算法学习——LeetCode力扣哈希表篇1(242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和)

拉依达不拉跨的博客 1182

Leetcode 242. 有效的字母异位词

循环遍历 t,如果对应的字符在 dict 中,且次数大于 0 ,就将次数减 1;如果字符不在 dict 中,返回 False。1.最开始的想法是先求出 s 和 t 的长度,如果不相等就直接返回 False。将 t 转换成 list ,循环遍历 s ,当循环到的字符在 list 中时,将该字符从 list 中删掉;这个想法能通过,就是有点慢。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

li_yizhixiaowukong的博客 438

Leetcode(242)——有效的字母异位词

Leetcode(242)——有效的字母异位词 题目 给定两个字符串 sss 和 ttt ,编写一个函数来判断 ttt 是否是 sss 的字母异位词。 注意:若 sss 和 ttt 中每个字符出现的次数都相同,则称 sss 和 ttt 互为字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入:s = “rat”, t = “car” 输出: false 提示: 1 <= s.length, t.length <=

KCDCY的博客 977

Leetcode 242.有效的字母异位词

Leetcode 242.有效的字母异位词 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 来源:力扣(LeetCode) 思路解析 方法一 将字符串排序后 ...

qq_28640193的博客 376

LeetCode 242. 有效的字母异位词

LeetCode 242. 有效的字母异位词题目描述思路第一种python代码第二种python代码 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 说明: 你可以假设字符串...

qq_41854710的博客 143
上一篇: 【中等】力扣算法题解析LeetCode245:最短单词距离Ⅲ
下一篇: 【中等】力扣算法题解析LeetCode249:移位字符串分组
达文汐
达文汐 大学讲师 大学讲师
博客等级 码龄7年 1268粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达文汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值