【算法与数据结构】242、LeetCode有效的字母异位词

news2024/12/23 9:18:52

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:题目要求判断两个字符串是否为字母异位词。什么是字母异位词呢?顾名思义,就是字母和字母数量都一样,但出现位置不一样的两个词称为字母异位词(按这个标准两个一模一样的词也是字母异位词)。因为字母仅有26个,我们构造一个数组,计算第一个字符串字母出现的频次,然后减去另一个字符串字母出现的频次,数组元素全为0说明是字母异位词。那么如何计算字母出现频率呢?我们将字符减去’a’字符,得到就是该字符在数组中的位置,字符按ASCII码相减(例如,‘a’ - ‘a’ = 0, ‘b’ - ‘a’ = 1,…)。题目也特别说明仅有小写字母,如果有大写,那么先统一转化成小写在做判断。
  程序如下

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

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( 1 ) O(1) O(1)

三、完整代码

# include <iostream>
# include <string>
using namespace std;

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

int main()
{
	string s = "anagram";
	string t = "nagaram";
	Solution s1;
	bool result = s1.isAnagram(s, t);
	cout << result << endl;
	system("pause");
	return 0;
}

end

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

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

相关文章

深入理解相机硬件抽象层

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、概览二、Camera HIDL 接口三 、Camera Provider 主程序四、Camera HAL3 接口 一、概览 始于谷歌的Treble开源项目&#xff0c;基于接口与实现的分离…

【AUTOSAR】UDS协议的代码分析与解读(二)----ECU诊断协议概述

UDSO诊断服务技术规范 1 范围 本规范规定了增强型诊断需求的诊断服务部分的内容&#xff0c;定义了通用电子系统需遵循的UDS通用执行 规则。 本规范适用于集团x事业部所有平台车型&#xff0c;所有电子控 制单元(ECU) 的诊断需求&#xff0c;均需按此规范执行。 本规范定义的…

Python神经网络编程学习笔记

文章目录 神经网络基本原理线性分类器学习率一个线性分类器的局限性逻辑AND、逻辑OR逻辑XOR 神经元sigmoid function的logistic function(逻辑函数) 多层神经元演示只有两层&#xff0c;每层两个神经元的神经网络的工作矩阵大法(点乘)使用矩阵乘法的三层神经网络示例反向传播误…

AJAX概述

1.1什么是AJAX. Ajax即AsynchronousJavascript And XML&#xff1a;异步数据回调。 使用Ajax技术网页应用能够快速地将更新呈现在用户界面上&#xff0c;不需要重载&#xff08;刷新&#xff09;整个页面【只刷新局部】&#xff0c;这使得程序能够更快地回应用户的操作。、 1…

H5U PLC EtherCAT总线伺服回原(6098H=3)

回原方式35请参看下面文章 汇川H5U PLC通过 EtherCAT总线控制伺服回原_RXXW_Dor的博客-CSDN博客大部分运动控制都会对机械回原点进行大篇幅讲解,也可以看出机械回原点的重要性。常规的回原点方式大概有几十种吧,本文会给出常用回原点的注意事项,和编程推荐写法。如果原点回…

二层和三层交换机到底有啥区别?二者如何切换?

概要 计算机网络中的交换机是用于在局域网&#xff08;LAN&#xff09;中转发数据包的重要设备。其中&#xff0c;二层交换机和三层交换机是两种常见的交换机类型。本文将详细介绍二层交换机和三层交换机的特点、工作原理、各自的优缺点以及在思科、华为、瞻博网络三家厂商如何…

互联网架构师联合总结的 Java 面试攻略,GitHub 标星 30K!

2023 年的互联网行业竞争越来越严峻&#xff0c;面试也是越来越难&#xff0c;一直以来我都想整理一套完美的面试宝典&#xff0c;奈何难抽出时间&#xff0c;这套 1000道的 Java 面试手册是行业内各大神联合总结出来的&#xff0c;上传到 Git 上目前 star 数达到了 30K 这套互…

金九银十Java面试八股文汇总(2023最新整理)

前言 这才刚刚进入 6 月&#xff0c;我就看到了许多朋友在焦急的准备“金九银十”跳槽面试&#xff0c;甚至很多即将毕业的大学生都在备战秋招&#xff0c;对于学历还算优秀的大学生来说&#xff0c;这是一次离大厂最近的机会&#xff0c;毕竟是应届毕业生&#xff0c;不会对技…

LatticeXP2深力科 LFXP2-8E-6TN144I 灵活的flexiFLASH架构 应用笔记介绍

LatticeXP2深力科 LFXP2-8E-6TN144I 是一款瞬时上电、安全、小尺寸的FPGA&#xff0c;具有多功能的开发平台,采用flexiFLASH™架构&#xff0c;结合了一个基于FPGA基本结构的 4输入查找表&#xff08;LUT&#xff09;以及用于设计数据片上存储的闪存非易失性单元。flexiFLASH架…

Triton教程 -- 利用Triton部署你自己的模型

Triton教程—利用Triton部署你自己的模型 给定一个经过训练的模型&#xff0c;我如何使用 Triton 推理服务器以最佳配置大规模部署它&#xff1f; 本文档旨在帮助回答这个问题。 对于那些喜欢高级概述的人&#xff0c;下面是大多数用例的通用流程。 对于那些希望直接进入的人…

ceph分布式存储实战

ceph分布式存储实战 分布式存储系统简介 性能与优势对比 虚拟机安装ceph集群 ceph存储系统简介 分布式存储概述 ceph基础 高可用ceph分布式存储系统部署 部署ceph集群 节点管理 ceph使用基础及数据存储案例 PG状态、数据读写流程及存储池操作 mon服务器的高可用: # apt in…

天线设计中的磁介质材料 探索可重构潜力

​from&#xff1a;IEEE Antennas & Propagation Magazine (Vol. 61 / No. 1 / Feb. 2019, pp:29-40) -- 文 前 -- 这篇文章针对铁氧体在外置磁场下磁导率发生变化这个特点&#xff0c;探讨铁氧体在可重构天线中的应用。文中对铁氧体材料的选择&#xff0c;磁导率数学模型…

C++ Builder XE AdvStringGrid的表格画线显示隐藏经典实例

源码实例下载&#xff1a;https://download.csdn.net/download/lzksword/87904787 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //----------------------------…

linuxOPS基础_yum详解

yum是如何安装软件的 yum仓库&#xff08;也称yum源&#xff09;用于存放各种rpm的软件包以及软件包之间的依赖关系&#xff08;repodata目录&#xff09;需要安装软件的计算机连接到指定yum仓库来安装软件包 yum源作用 软件包管理器&#xff0c;类似Windows下的软件管家 yu…

屋大维和王莽,同时同路不同命的双雄

汉朝与罗马&#xff0c;虽然他们相隔万里分布在欧亚大陆东西两端&#xff0c;但他们几乎同时成为世界性文明&#xff0c;分别都是当时世界上东西方最强大的所在。公元元年前后&#xff0c;这两个庞然大物内部都发生了一次巨变&#xff0c;罗马由共和制变为了元首制。而汉朝也由…

ThreadLocal引发的内存泄漏分析

预备知识&#xff08;引用&#xff09; Object o new Object(); 这个o&#xff0c;我们可以称之为对象引用&#xff0c;而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时&#xff0c;只是表示o不再指向堆中object的对象实例&#xff0c;不代表这个…

chatgpt赋能python:Python在SEO排名中的重要性

Python在SEO排名中的重要性 Python作为一种开源、高级程序设计语言&#xff0c;在Web开发、科学计算、人工智能等领域得到了广泛应用。它的发展速度快、可扩展性强、易于学习和使用等特点&#xff0c;使得Python越来越受到开发者的欢迎&#xff0c;成为重要的编程语言之一。在…

Question Log(★ > 使用VsCode构建Unity 开发环境 )

★ > 使用VsCode构建Unity 开发环境 配置Vscode Unity 环境 官方文档 Unity Development with VS Code 1.The .NET Core SDK cannot be located: A valid dotnet installation could not be found. .NET Core debugging will not be enabled. Make sure the .NET Core SDK …

CVE-2023-0215

mysql 安全漏洞 生产版本&#xff1a;5.5 漏洞编号&#xff1a; CVE编号 CVE-2023-0215 CNNVD编号 CNNVD-202302-521 另外还有以下其他漏洞&#xff1a; 解决办法&#xff1a; 1.下载补丁需要CSI,买了oracle服务才可能会有这个认证码&#xff1b; 2.没有这个认证码&#…

从reflect?metadata理解Nest实现原理

目录 正文入口Module 引入模块CatsService操作数据库Reflect Metadata那元数据存在哪呢&#xff1f;nest 的源码&#xff1a;总结 正文 Nest 是 Node.js 的服务端框架&#xff0c;它最出名的就是 IOC&#xff08;inverse of control&#xff09; 机制了&#xff0c;也就是不需…