67、【链表】leetcode——242. 有效的字母异位词(C++版本)

news2024/11/20 4:21:07

题目描述

在这里插入图片描述
在这里插入图片描述
原题链接:242. 有效的字母异位词

一、ASCII码作为Key

因s和t都为小写字母,因此可将s和t中字母用ASCII码数字表示,减去a,映射到0-25当中,作为Hash表映射结构。

首先,查看s和t的长度是否相同,若不同,则一定不为字母异位词。

然后,遍历s中字母,将键对应的值加一。再去遍历t中字母,减去已记录的Hash表中的键值,当出现减去后小于0时,说明t相对于s在该位多一位字,那么相应的也会相对于s在某一位上少一位字,t和s不为字母异位词。

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size() != t.size())			return false;
        int record[26] = {0};
        for(int i = 0; i < s.size(); i++) {
            record[s[i] - 'a']++;
        }
        for(int i = 0; i < t.size(); i++) {
            if(--record[t[i] - 'a'] < 0)	return false;
        }
        return true;
    }
};

时间复杂度 O ( n ) O(n) O(n)
空间复杂度 O ( 1 ) O(1) O(1)(为一个常量空间)

二、字符作为Key

采用unordered_mapString作为Key,在字符串s中每出现一个Key,就将对应的Value加一。

然后遍历字符串t,当用t中字符作为Key,找到对应的Value为0时,说明不为字符异位词,返回false。当不为0时,说明对应的字符串s中出现过该字符,将其对应的Value减一。当全部遍历完未出现0时,说明互为字母异位词,返回true

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

        unordered_map<char, int> record; 
        for(char str : s) {
            record[str]++;
        }
        for(char str : t) {
            if(record[str] != 0) {
                record[str]--;
            } else {
                return false;
            }
        }
        return true;
    }
};

时间复杂度 O ( n ) O(n) O(n)
空间复杂度 O ( n ) O(n) O(n)

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

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

相关文章

09线性相关、基、维数

线性相关、基、维数 知识概要 ​ 从线性相关或线性无关的特征入手,介绍空间的的几个重要概念:基、维数 线性无关与线性相关 (1)背景知识: 谈论的概念都是基于向量组的,而不是基于矩阵。线 性无关,线性相关是向量组内的关系,基也是一个向量组,不要与矩阵概念混淆。 首先…

华为云工程师HCIA——服务器技术基础

服务器的定义 服务器是计算机的一种。他比普通计算机运行熟读更快、负载更高而且价格更高。 服务器是为用户提供服务的计算机&#xff0c;通常分为文件服务器、数据库服务器和应用程序服务器。 服务器特点 可用性可扩展性可管理性易用性可靠性 服务器硬件结构 Huawei2280…

01 大数据概述

01 大数据概述1、大数据&#xff1a; 主要用来解决海量数据的存储和海量数据的分析计算问题。 2、大数据的特点&#xff1a; 大量&#xff08;Volume&#xff09;&#xff1a;一些大企业的数据量已经接近EB量级。高速&#xff08;Velocity&#xff09;: 随着数据量的增大&…

B树的原理及代码实现、B+树和B*树介绍及应用

目录 一.B树介绍 &#xff08;一&#xff09;.B树存在意义 &#xff08;二&#xff09;.B树的规则 二.B树实现原理及代码 &#xff08;一&#xff09;.实现原理 &#xff08;二&#xff09;.代码 三.B树 &#xff08;一&#xff09;.概念 &#xff08;二&#xff09;.应…

Python批量采集某网站高清壁纸,这下不用担心没壁纸换了

前言 咳咳&#xff0c;担心壁纸不够用&#xff1f;想要一天换一张&#xff1f;ok &#xff0c;今天就来搞搞壁纸网站 之前老有很多高质量的网站都不见了&#xff0c;趁着这个还在&#xff0c;赶紧多保存点 话不多说 马上开始 我的表演 代码 导入模块 所有 源码 点击 此处 领…

矩阵快速幂(新手做法)

1.通过一个代码来了解矩阵乘法2.基本快速幂3.那么最后就是矩阵快速幂了4.练习模板&#xff1a;5.进阶运用&#xff0c;蓝桥杯15届省赛c语言组第9题矩阵快速幂的学习流程&#xff1a; 矩阵乘法运算规则&#xff08;线性代数基础&#xff09;快速幂的模板 1.通过一个代码来了解矩…

S32K144—什么是SBC系统基础芯片?

SBC&#xff08;System Basis Chip&#xff09;芯片在汽车电子领域可谓占一席之地了。那么什么是SBC&#xff1f;怎么用&#xff1f;用在哪里&#xff1f;主要特性&#xff1f; 可以简单理解成&#xff1a;SBC是一类拥有特出功能&#xff08;电源、通信、监控诊断、安全&#…

【附源码】基于fpga的自动售货机(使用三段式状态机实现)

目录 1、VL38 自动贩售机1 题目介绍 思路分析 代码实现 仿真文件 2、VL39 自动贩售机2 题目介绍&#xff1a; 题目分析 代码实现 仿真文件 3、状态机基本知识 1、VL38 自动贩售机1 题目介绍 设计一个自动贩售机&#xff0c;输入货币有三种&#xff0c;为0.5/1/2元&…

嵌入式Linux驱动开发笔记(八)

嵌入式Linux驱动开发笔记&#xff08;八&#xff09; 交叉编译工具说明&#xff1a; 正点原子提供两种交叉编译工具链。这两种交叉编译工具链解释如下图。 我们只需要知道上面的第二种通用的交叉编译器去学习【正点原子】 I.MX6U 嵌入式 Linux 驱动开发指南这本教程。第一种…

lscpu查看cpu信息

$ lscpu Architecture: x86_64 # 架构CPU op-mode(s): 32-bit, 64-bitAddress sizes: 45 bits physical, 48 bits virtualByte Order: Little Endian # 字节序 CPU(s): 2 # 逻辑cpu数On-line CPU(s) list: 0,1 Vendo…

GitHub上 7 个Spring Boot 优质开源项目

前后端分离已经在慢慢走进各公司的技术栈&#xff0c;不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面&#xff0c;松哥也非常建议大家学习一下前后端分离开发&#xff0c;以免在公司干了两三年&#xff0c;SSH 框架用的滚瓜烂熟&#xff0c;出来…

hcip第四天实验

实验步骤 配置ip 所有设备可以与公网可以通信&#xff0c;在边界路由器上配置缺省指向ISP 配置普通GRE 启OSPF&#xff0c;对于不规则区域使用重发布 优化LSA更新量 R5&#xff1a; [r5]acl 2000 [r5-acl-basic-2000]rule permit source any [r5]int GigabitEthernet…

数据库知识

关系数据库标准语言SQL 写在开头这一章应该把更多的功夫放在实践上面&#xff0c;书中的语句繁杂多样&#xff0c;不亲自写一写是不容易学会的。其次&#xff0c;理论学了那么多&#xff0c;不会有人不想实践敲一下吧[doge]&#xff1f;建议先搞数据更新中的插入数据后再看查询…

【回答问题】ChatGPT上线了!写出coco数据集的图像分类训练和预测函数代码?

写出coco数据集的图像分类训练代码 好的&#xff0c;我会尽力写出图像分类训练代码。首先&#xff0c;你需要准备好 COCO 数据集的图像和标签&#xff0c;并将其转换成适合你模型使用的格式。其次&#xff0c;你需要选择一个图像分类模型&#xff0c;并定义好模型的结构。接下…

【课程太贵,学习无门,让你们了解CSS3入门知识】

文章目录‍❤️‍&#x1f525;CSS简介‍‍‍‍❤️‍&#x1f525;CSS选择器❣️选择器一❣️选择器二❣️关系选择器‍❤️‍&#x1f525;CSS属性❣️字体属性❣️背景属性❣️文本属性❣️表格属性‍❤️‍&#x1f525;CSS文档流‍❤️‍&#x1f525;CSS浮动‍❤️‍&…

【编程导航】设计模式学习笔记

设计模式日常学习(一)设计模式 软件设计模式的概念 软件设计模式&#xff08;Software Design Pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的…

windows下编译dtkwidget

参考 https://blog.csdn.net/yuxue321/article/details/109552210 步骤 安装官方qt5.12.3&#xff0c;安装时勾选64位版本、32位版本 下载glib和pkg&#xff0c;到mingw73_32目录下&#xff0c;解压到当前文件夹 https://brltty.app/archive/Windows/MinGW/glib_2.34.3-1_wi…

【大数据】Hadoop完全分布式配置(超详细)

文章目录概述1.准备Linux2.安装JDK3.克隆两台虚拟机4.免密登陆5.安装Hadoop6.配置Hadoop配置文件7.启动服务8.在集群上测试一个jar包-单词统计的功能问题总结概述 Hadoop完全分布式配置-具体步骤如下 默认前提&#xff1a; 1.在Windows平台下安装Vmware平台&#xff08;默认已…

数据库的三大范式

数据库的三大范式 设计关系数据库时&#xff0c;需要遵从不同的规范要求&#xff0c;设计出合理的关系型数据库&#xff0c;这些不同的规范要求被称为不同的范式&#xff0c;越高的范式数据冗余度越低。 实际开发中涉及到的范式一般有三种&#xff1a;第一范式、第二范式、第…

WindowsTerminal_01 配置SSH连接

文章目录1 前言2 过程参考1 前言 windows terminal 功能强大&#xff0c;可以自定义终端。由于实验需求&#xff0c;需要用到Linux服务器&#xff0c;所以打算使用Windows Termial 来配置终端&#xff0c;以此来方便地登录服务器&#xff0c;执行一些简单的命令 2 过程 自定…