【面试经典150 | 哈希表】有效的字母异位词

news2024/9/21 4:38:33

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:排序
    • 方法二:哈希数组
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【排序】【哈希表】【数组】


题目来源

242. 有效的字母异位词


题目解读

两个字符串中每个字符出现的次数都是一样的,则这两个字符串是字母异位词。现在需要判断给你的两个字符串是否为字符异位词。


解题思路

方法一:排序

我们可以对两个字符串进行升序排序,如果排序后两个字符相等,则互为字母异位词,返回 true,否则返回 false

实现代码

class Solution {
public:
    bool isAnagram(string s, string t) {
        sort(s.begin(), s.end());
        sort(t.begin(), t.end());
        return s == t;
    }
};

复杂度分析

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n 为字符串 s 的长度。

空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),排序需要使用的额外空间。

方法二:哈希数组

我们使用一个数组来统计字符串中出现的字母数量,通常使用两个哈希数组分别统计两字符串中的字符数量,最后再比较对应字符出现的数量是否一致。

但是现在可以只用一个哈希数组,遍历 s 增加哈希数组中字符的数量,遍历 t 减少哈希数组中对应字符的数量,如果某个字符的数量小于 0 了,直接返回 false;如果直到遍历完毕 t 都没有遇到字符数量小于 0 的情况,最后返回 true

实现代码

class Solution {
public:
    bool isAnagram(string s, string t) {
        if (s.size() != t.size()) return false;

        vector<int> cnts(26, 0);
        for (char c : s) {
            ++cnts[c - 'a'];
        }
        for (char c : t) {
            --cnts[c - 'a'];
            if (cnts[c - 'a'] < 0) return false;
        }
        return true;
    }
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为字符串 s 的长度。

空间复杂度: O ( n O(n O(n,哈希数组需要使用的额外空间。


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上海-华为全联接大会|竹云受邀参加华为云ROMAConnect行业生态联盟成立联合发布会

2023年9月22日&#xff0c;在上海举办的华为全联接大会上&#xff0c;竹云作为华为云全方位合作伙伴代表&#xff0c;受邀参加华为云ROMAConnect行业生态联盟成立联合发布会。华为云PaaS服务产品部副部长张甲磊以及联盟主要成员企业出席发布仪式&#xff0c;共同见证华为云ROMA…

项目结构目录说明--treer的使用

模块化项在模块比较多的时候&#xff0c;需要整理一份各模块的说明&#xff0c;怎么能够直观的和项目对比看比较清晰呢&#xff0c;有没有一种直观体现方式呢&#xff0c;有的&#xff0c;请看本篇文章足够。 效果图&#xff1a; 需要treer即可实现。 安装treer 在项目跟目录…

手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明

一、如何查看cpu加购 winR&#xff0c;输入cmd 填下指令如下 adb shell getprop ro.product.cpu.abi 二、架构描述 1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. 2.arm64-v8a: 第8代、64位ARM处理器&#xff0c;很少设备&a…

Git如何上传代码至GitHub

GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。GitHub拥有1亿以上的开发人员&#xff0c;400万以上组织机构和3.3亿以上资料库。 今天&#xff0c;详细介绍如何将文件通过Git上传至GitHub。 如…

21字符串-简单操作

目录 字符串匹配 重要概念 BF算法 RK算法 LeetCode之路——344. 反转字符串 分析 LeetCode之路——541. 反转字符串 II 分析 字符串匹配 字符串匹配的算法很多&#xff0c;常见的有BF&#xff08;Brute Force&#xff09;、RK&#xff08;Rabin-Karp&#xff09;这两种…

3D开发工具HOOPS助力Eleven Dynamics加速开发QA自动化平台

Nexos平台提供强大的可视化功能&#xff0c;并将整体测量时间减少80%。 2021年10月19日&#xff0c;俄勒冈州本德市&#xff08;Newswire.com&#xff09;——工程软件开发工具包的领先供应商Tech Soft 3D今天宣布&#xff0c;Eleven Dynamics是一家位于瑞士的初创公司&#x…

CPU的执行流程

CPU的执行流程 取指令&#xff08;Instruction Fetch&#xff09;&#xff1a;CPU 从程序存储器&#xff08;通常是内存&#xff09;中获取要执行的下一条指令。这个过程包括以下步骤&#xff1a; CPU 从程序计数器&#xff08;Program Counter&#xff0c;PC&#xff09;中获…

1682653-80-0,四嗪染料试剂Tetrazine PEG5 NHS,四嗪五聚乙二醇活性脂

产品亮点&#xff1a;Tetrazine PEG5 NHS ester&#xff08;四嗪五聚乙二醇活性脂&#xff09;是一种高效能的生物活性化合物&#xff0c;拥有卓越的生物相容性和水溶性&#xff0c;用途广泛。CAS号&#xff1a;1682653-80-0&#xff0c;中文名&#xff1a;四嗪五聚乙二醇活性脂…

uniapp微信小程序自定义封装分段器。

uniapp微信小程序自定义封装分段器。 话不多说先上效果 这里我用的是cil框架 vue3 下面贴代码 组价代码&#xff1a; <template><view class"page"><viewv-for"(item, index) in navList":key"index"click"changeNav(ind…

逐字稿 | ViT论文逐段精读【论文精读】

目录 标题 摘要 1引言 1.1把 Transformer 用到视觉问题上的一些难处 1.2受到transformer可扩展性的启发&#xff0c;要用一个标准的transformer处理视觉问题&#xff0c;序列长度怎么办&#xff1f; 最相似的过往工作 2结论 3相关工作 4方法 4.1整个对图片的这个预处…

【通信系列 5 -- HTTPS 介绍】

文章目录 1.1 HTTPS链接网址1.1.1 HTTPS 产生背景1.1.2 HTTPS工作内容1.1.3 SSL/TLS1.1.4 TLS 的命名规范1.1.5 TLS 加密算法1.1.6 分组模式1.1.7 摘要算法1.1.8 非对称加密1.1.9 CA认证 1.2 openssl1.2.1 RSA 签名验签 1.1 HTTPS链接网址 HTTP 是一种 超文本传输协议(Hyperte…

服务器数据恢复-服务器硬盘指示灯黄灯闪烁的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器面板上的硬盘指示灯显示黄色是一种警告&#xff0c;提示指示灯对应的服务器硬盘已经被服务器识别出存在故障&#xff0c;硬盘即将下线。如果出现这种情况&#xff0c;建议服务器管理员/运维人员及时用完好的硬盘替换显示黄色指示灯对应的…

新人如何做好功能测试,学会这几项够用了

根据一份报告&#xff0c;应用程序崩溃导致71&#xff05;的卸载。迫使用户卸载应用程序的其他原因是页面响应时间&#xff0c;混乱的UI&#xff0c;电池消耗等。这表明功能测试和非功能测试对于交付用户友好型应用程序的重要性。 一、测试基础的重要性 作为一名测试新人&…

设备巡检管理系统与隐患排查治理

如何才能将设备巡检做细做规范呢&#xff1f; 1.制定巡检制度和流程&#xff1a;通过建立明确的巡检制度和流程&#xff0c;并将其纳入企业的安全管理体系中。利用凡尔码平台制定一个详细的巡检计划&#xff0c;包括巡检的时间、地点、内容、检查方法和注意事项等&#xff0c;帮…

Windows如何运行anywhere

问题描述 在dist&#xff0c;目录中执行anywhere命令时&#xff0c;出现如下错误信息&#xff1a; anywhere : 无法加载文件 C:\Users\calos\AppData\Roaming\npm\anywhere.ps1&#xff0c;因为在此系 统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microso…

谷歌云 | 零售行业的生成式 AI:如何跟上步伐并取得领先

【Cloud Ace 是 Google Cloud 全球战略合作伙伴&#xff0c;在亚太地区、欧洲、南北美洲和非洲拥有二十多个办公室。Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位&#xff0c;并连续多次获得 Google Cloud 各类奖项。作为谷歌云托管服务商&#xff0c;我们提供谷…

Css框架之星星评价功能

我一直将自学的系统叫做CSS框架&#xff0c;其实这是一个CssJavascriptHtml的代码框架&#xff0c;更准确的说应该叫前台框架。这类前台框架&#xff0c;我一直用先写CSS代码&#xff0c;后写JavaScript&#xff0c;最后记录HTML代码&#xff0c;实际在开发中&#xff0c;我喜欢…

计算机网络第四章——网络层(末)

赌书消得泼茶香当时只道是寻常 文章目录 概述&#xff1a;组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干目标主机&#xff0c;并被它们正确接收&#xff0c;组播仅应用于UDP 因特网中的IP组播也使用组播组的概念&#xff0c;每个组都有一个特别分配的…

基于Springboot实现垃圾分类网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现垃圾分类网站管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述垃…

2024王道考研计算机组成原理——计算机硬件的基础知识

计算机组成原理的基本概念 计算机硬件的针脚都是用来传递信息&#xff0c;传递数据用的&#xff1a; 服务程序包含一些调试程序&#xff1a; 计算机硬件的基本组成 控制器通过电信号来协调其他部件的工作&#xff0c;同时负责解析存储器里存放的程序指令&#xff0c;然后指挥…