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

ops/2025/2/8 13:37:12/

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.ppmy.cn/ops/156736.html

相关文章

ESP32开发学习记录---》GPIO

she 2025年2月5日&#xff0c;新年后决定开始充电提升自己&#xff0c;故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。 ESPIDF开发环境配置网上已经有很多的资料了&#xff0c;我就不再赘述&#xff0c;我这里只是对我的学习经历的一些记录。 首先学习一个…

NPM 的扁平化目录与幻影依赖问题,以及 PNPM 如何通过硬链接和软链接解决

随着 JavaScript 项目的日益复杂&#xff0c;包管理工具在提高开发效率方面起到了至关重要的作用。尤其是 npm 和 yarn&#xff0c;它们极大地简化了依赖管理和包的安装。然而&#xff0c;npm 在管理依赖时引入了一个新的问题&#xff1a;幻影依赖&#xff0c;这与其优化磁盘空…

阿里云 | DeepSeek人工智能大模型安装部署

ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示&#xff0c;在阿里云人工智能大模型开源社区ModelScope中&#xff0c;使用阿里云…

【详细讲解】spark优化

目录 一、Spark 性能调优 1 常规性能调优 1.1 常规性能调优一&#xff1a;最优资源配置 1.2 常规性能调优二&#xff1a;RDD 优化 RDD 复用 RDD 持久化 RDD 尽可能早的 filter 操作 1.3 常规性能调优三&#xff1a;并行度调节 1.4 常规性能调优四&#xff1a;广播大变…

centos如何压缩zip

在CentOS系统中&#xff0c;压缩和解压缩文件是常见的任务之一。zip命令行工具可以方便地将文件或目录压缩成zip格式文件。本文将详细介绍如何在CentOS上安装并使用zip工具进行文件和目录的压缩。 安装zip工具 首先&#xff0c;确保系统安装了zip工具。如果未安装&#xff0c…

SpringBoot Maven 项目 pom 中的 plugin 插件用法整理

把 SpringBoot Maven 项目打包成 jar 文件时&#xff0c;我们通常用到 spring-boot-maven-plugin 插件。 前面也介绍过&#xff0c;在 spring-boot-starter-parent POM 和 spring-boot-starter POM 中都有插件的管理&#xff0c;现在我们就撸一把构建元素中插件的用法。 一、…

cuda手搓CNN识别手写数字

英伟达提出了cuda框架&#xff0c;用以实现gpu变成。cuda c以c语言为基础&#xff0c;目前的cuda编译器已经能够支持c17的语法。但是cuda c的基础语法还是只能使用C。 最近结合使用C模板编程和cuda c&#xff0c;手搓了一个CNN。其中矩阵的点乘是依据之前博客提出的原理、激活函…

Vue WebSocket简单应用 ws

webSocket应用 <template><div></div> </template><script> import { getToken } from "/utils/auth"; export default {data() {return {url: "",Socket: null, //socket对象lockReconnect: false, //锁定拒绝重连close: …