[LeetCode]day16 242.有效的字母异位词

242. 有效的字母异位词 - 力扣(LeetCode)

题目描述

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

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

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

字母异位词的定义:


题解

解法一:排序

把字符串进行排序,比较两个字符串是否完全相同。如果完全相同就是字母异位词

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

解法二:使用哈希表

当遇到要查询一个元素是否在集合中时,就要想当使用哈希表

当要使用哈希表时,要考虑三种数据结构 数组,set,map

在这道题中,我们使用普通数组来统计字符串s中每个字母出现的频率,比如:有一个a,就在0号位置上加1,有一个b,就在1号位置上加1

这个位置是怎么算出来的呢?

用该字母-‘a’ 得到的数 因为为自动转换为ASCII码值 ,'a'-'a'=0;'b'-'a'=1..

再统计字符串t中每个字母出现的频率,在hash数组中然后减去,比如:有一个a,就在0号位置上减1,有一个b,就在1号位置上减1

如果两个字符串的组成完全相同,那么所有字母出现的频率都应该相同

那么最终这个hash数组全部元素都应该为0

如果有地方不为0,那么说明这两个字符串组成不同

class Solution {
public:bool isAnagram(string s, string t) {int hash[26]={0};  //创建哈希表for(int i=0;i<s.size();i++){hash[s[i]-'a']++;} for(int i=0;i<t.size();i++){hash[t[i]-'a']--;}for(int i=0;i<sizeof(hash)/sizeof(hash[0]);i++){if(hash[i]!=0)return false;}return true;}
};

易错点:
我在第一遍书写时,最后在遍历hash数组时,我直接写了hash.size(),这是一种错误的写法!

hash数组是一个原生数组,不是STL容器,没有size()方法,只能用sizeof(hash)/sizeof(hash[0])

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯---力扣题库第38题目解析

文章目录 1.题目重述2.外观数列举例说明3.思路分析&#xff08;双指针模拟&#xff09;4.代码说明 1.题目重述 外观数列实际上就是给你一串数字&#xff0c;我们需要对于这个数据进行一个简单的描述罢了&#xff1b; 2.外观数列举例说明 外观数列都是从1开始的&#xff0c;也…

Linux网卡配置方法

1、查看IP ip a 网卡状态 UP/down 2、查看网关 如果显示route命令未找到需要下载net-tools软件包 route -n 3、查看DNS服务器地址 DNS服务器地址会存放在/etc/resolv.conf文件中 使用cat命令可以查看 cat /etc/resolv.conf 4、修改网卡配置 方法1&#xff09;编…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天&#xff0c;DeepSeek 作为一款极具创新性和实用性的 AI&#xff0c;在众多同类产品中崭露头角&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能&#xff0c;它基于先进…

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、概述 在白色家电领域&#xff0c;降压转换器的应用非常广泛&#xff0c;为了实现不同的功能就需要不同的电源轨。TPS542…

无限使用Cursor

原理&#xff1a;运行程序获得15天的免费试用期&#xff0c;重新运行程序重置试用期&#xff0c;实现无限使用。免费的pro账号&#xff0c;一个月有250的高级模型提问次数。 前提&#xff1a;已安装cursor cursor-vip工具&#xff1a;https://cursor.jeter.eu.org?p95d60efe…

Linux之文件IO前世今生

在 Linux之文件系统前世今生&#xff08;一&#xff09; VFS中&#xff0c;我们提到了文件的读写&#xff0c;并给出了简要的读写示意图&#xff0c;本文将分析文件I/O的细节。 一、Buffered I/O&#xff08;缓存I/O&#xff09;& Directed I/O&#xff08;直接I/O&#…

【计组】实验五 J型指令设计实验

目录 一、实验目的 二、实验环境 三、实验原理 四、实验任务 代码 一、实验目的 1. 理解MIPS处理器指令格式及功能。 2. 掌握lw, sw, beq, bne, lui, j, jal指令格式与功能。 3. 掌握ModelSim和ISE\Vivado工具软件。 4. 掌握基本的测试代码编写和FPGA开发板使用方法。 …

扩展知识--缓存和分时复用cpu

在多核CPU中&#xff0c;缓存和分时复用CPU是两个重要的概念&#xff0c;它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存&#xff08;Cache&#xff09;是位于CPU与主…

人工智能:从概念到未来

人工智能&#xff1a;从概念到未来 一、引言 在当今数字化时代&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;已从科幻小说和电影中的幻想逐渐走进现实&#xff0c;成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…

nvm:node 版本管理器

一、先安装git Git 安装完成后执行 git --version查看版本号是否安装成功 二、安装nvm &#xff08;参考链接&#xff1a;mac 安装nvm详细教程 - 简书&#xff09; 官网&#xff08;https://github.com/nvm-sh/nvm/blob/master/README.md&#xff09;查看最新版本安装命令 …

【1】深入解析 SD-WAN:从思科 SD-WAN 视角看现代网络发展

1. 什么是 SD-WAN? SD-WAN(软件定义广域网,Software-Defined Wide Area Network)是一种基于 SDN(软件定义网络)的广域网技术。它利用软件控制来管理广域网连接、流量和安全策略,从而优化数据传输,提高网络可用性。 传统的广域网(WAN)通常依赖专线(如 MPLS)连接分…

C语言基础学习之环境准备

写在前面 本文看下如何在win环境中使用vs code开发C程序。 1&#xff1a;安装gcc 从这里下载&#xff0c;解压&#xff0c;配置环境变量&#xff0c;执行gcc -v验证: C:\Windows\system32>gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPERD:/programs/…

LabVIEW之TDMS文件

在很多场合&#xff0c;早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作&#xff0c;但常规数据库对于中高速数据采集显然是不合适的&#xff0c;因为高速数据采集的数据量非常大&#xff0c;用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…

设置IDEA的内存大小,让IDEA更流畅: 建议设置在 2048 MB 及以上

文章目录 引言I 更改内存设置基于窗口界面进行内存设置修改内存配置文件II IDEA中的一些常见问题及其解决方案引言 方式一:基于窗口界面进行内存设置方式二:修改内存配置文件I 更改内存设置 基于窗口界面进行内存设置 打开IDEA,上方菜单栏 Help > Change Memory Settin…

攻防世界ctf

1.题目名称-文件包含 if(isset($_GET[filename])){$filename $_GET[filename];include($filename);} 通过代码审计&#xff0c;我们发现这存在文件包含漏洞&#xff0c;由于没有很好的进行过滤&#xff0c;所以我们可以通过 URL 参数传递任意文件路径给参数$filename&#…

多线程操作

一.多线程 1.线程的创建 1.继承Thread类,重写run()方法创建线程 2.实现Runnable接口,重写run()方法 3.匿名内部类创建线程 4.匿名内部类实现Runnable接口创建线程 5.[常用]lambda表达式创建线程 2.启动线程 Thread类使用start方法,启动一个线程,对于同一个Thread对象只能…

根文件系统 Debian10【1】移植

1.开发背景 一般根文件系统使用 Busybox 或者是 Buildroot 构建&#xff0c;这样构建出来的文件系统比较小&#xff0c;但是不具备上网功能&#xff0c;扩展性比较差。随着 ARM 的日益强大&#xff0c;ARM 可以搭载更庞大复杂的系统&#xff0c;可以是 Ubuntu 或者 Debian 等发…

OpenSIPS-Dispatcher模块详解:优化SIP流量分发的利器

在 OpenSIPS 中&#xff0c;dispatcher 模块用于实现负载均衡和故障转移。通过 dispatcher 模块&#xff0c;你可以将 SIP 请求分发到一组后端服务器&#xff08;如媒体服务器、代理服务器等&#xff09;&#xff0c;并根据配置的算法和策略动态调整分发逻辑。 模块功能使用样…

09vue3实战-----引入element-plus组件库中的图标

09vue3实战-----引入element-plus组件库中的图标 1.安装2.引入3.优化 element-plus中的icon图标组件的使用和其他平台组件(如el-button按钮)是不一样的。 1.安装 npm install element-plus/icons-vue2.引入 在这我们只讲述最方便的一种引入方法------完整引入。这需要从elem…

Docker 部署 GitLab

一、下载镜像 docker pull gitlab/gitlab-ce 二、运行容器 docker run -d --name gitlab-20080 \n -p 20443:443 -p 20080:80 -p 20022:22 \n -v /wwwroot/opt/docker/gitlab-20080/etc:/etc/gitlab \n -v /wwwroot/opt/docker/gitlab-20080/log:/var/log/gitlab \n -v /www…