Leetcode 剑指 Offer II 032. 有效的变位词

news2024/11/16 17:47:14

题目难度: 简单

原题链接

今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~

题目描述

给定两个字符串 s 和 t ,编写一个函数来判断它们是不是一组变位词(字母异位词)。

注意:若  s 和 t  中每个字符出现的次数都相同且字符顺序不完全相同,则称  s 和 t  互为变位词(字母异位词)。

示例  1:

  • 输入: s = “anagram”, t = “nagaram”
  • 输出: true

示例 2:

  • 输入: s = “rat”, t = “car”
  • 输出: false

示例 3:

  • 输入: s = “a”, t = “a”
  • 输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 10^4
  • s and t  仅包含小写字母

题目思考

  1. 如何统计字符串的字符出现次数?

解决方案

思路

  • 要想统计字符串, 我们可以利用计数字典或长度为 26 的数组(因为只包含小写字母)
  • 然后遍历 s 的每个字符, 将对应计数加 1
  • 接下来遍历 t 的每个字符, 将对应计数减 1
  • 最后每个字符的计数都应该是 0, 这样才说明两个字符串的每个字符出现的次数都相同
  • 对于 Python3 而言, 也可以直接使用 collections.Counter 来统计并比较, 这样可以简化到一行代码
  • 另外可以进行一些优化, 先判断两字符串长度是否相等, 不等直接返回 False, 避免后面的耗时比较
  • 而且特别注意题目要求两个字符串不能完全相同, 所以也要比较两个字符串本身, 相同的话直接返回 False

复杂度

  • 时间复杂度 O(N): 需要统计每个字符
  • 空间复杂度 O©: C 是字符串的字符种类数

代码

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        # 两字符串长度相等&&自身不相同&&字符计数相等
        return len(s) == len(t) and s != t and collections.Counter(s) == collections.Counter(t)

大家可以在下面这些地方找到我~😊

我的 GitHub

我的 Leetcode

我的 CSDN

我的知乎专栏

我的头条号

我的牛客网博客

我的公众号: 算法精选, 欢迎大家扫码关注~😊

算法精选 - 微信扫一扫关注我

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

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

相关文章

基于物联网技术的智能配电室综合监控系统设计与产品选型

摘要&#xff1a;配电室是电力系统的重要基础设施&#xff0c;可以保障供配电系统的安全稳定运行。但是&#xff0c;配电室数量多、部署分散、管理复杂&#xff0c;人工现场巡检管理方式费时费工、错误率高&#xff0c;如果发生故障隐患&#xff0c;往往无法及时发现。针对配电…

Sparse Fuse Dense: 向高质量的深度补全3D检测迈进

点云的稀疏性&#xff1a;在远距离和遮挡区域提供的信息较差&#xff0c;导致难以生成精确的3D边界框。 出现了多模态融合。 图像和点云的不同表示方式使得它们难以融合&#xff0c;导致性能不佳。 论文提出了一种新颖的多模态框架SFD&#xff08;Sparse Fuse Dense&#xf…

二层交换机工作原理与MAC地址介绍

目录 MAC地址介绍 MAC地址的组成 MAC地址分类 MAC地址的作用 二层交换机介绍 MAC地址表的定义 MAC地址表项类型 二层交换机对数据帧的处理动作 MAC地址介绍 MAC地址&#xff08;Media Access Control Address)&#xff0c;直译为媒体存取控制位地址 MAC地址的组成 MA…

华为OD机试真题(Java),图片整理(100%通过+复盘思路)

一、题目描述 Lily上课时使用字母数字图片教小朋友们学习英语单词&#xff0c;每次都需要把这些图片按照大小&#xff08;ASCII码值从小到大&#xff09;排列收好。请大家给Lily帮忙&#xff0c;通过代码解决。 Lily使用的图片使用字符"A"到"Z"、“a"…

JMeter 环境配置

目录 前言&#xff1a; 一、 JDK安装 二、 安装JMeter 三、 安装插件 前言&#xff1a; JMeter是一款功能强大的性能测试工具&#xff0c;用于模拟多种负载条件下的应用程序行为&#xff0c;环境配置是jmeter学习的第一步&#xff0c;每次换电脑就得重新配置&#xff0c;为…

Spark RDD dataframe嘿嘿

RDD&#xff08;Resilient Distributed Datasets&#xff09;可扩展的弹性分布式数据集&#xff0c;RDD是spark最基本的数据抽象&#xff0c;RDD表示一个只读、分区且不变的数据集合&#xff0c;是一种分布式的内存抽象&#xff0c;与分布式共享内存&#xff08;Distributed Sh…

面试题:希尔排序是一种稳定排序吗?

面试题&#xff1a;希尔排序是一种稳定排序吗&#xff1f; 对于算法的稳定性&#xff0c;有这样一个记忆技巧&#xff0c;不稳定排序是"快些选队"&#xff0c;对应于快速排序/希尔排序/选择排序/堆排序。希尔排序也名列其中&#xff0c;因此也是一种不稳定排序&…

CODESYS 数组类型变量(ARRAY)使用介绍

博途PLC数组类型变量使用介绍请参看下面文章博客: 博途1200/1500PLC上升沿下降沿指令编程应用技巧(bool数组)_博途上升沿指令_RXXW_Dor的博客-CSDN博客博途PLC的下降沿和上升沿指令,在控制系统编程时经常会使用。和SMARTS7-200有所不同,遵循IEC-6113标准提供的上升沿下降沿…

【初识C语言(6)】指针+结构体

文章目录 1. 指针1.1 内存1.2 指针变量的大小 2. 结构体 1. 指针 想要学好指针&#xff0c;首先必须要先了解内存。 1.1 内存 内存介绍 内存是电脑上特别重要的存储器&#xff0c;计算机中程序的运行都是在内存中进行的 。 所以为了有效的使用内存&#xff0c;就把内存划分…

​LeetCode解法汇总1401. 圆和矩形是否有重叠

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给你一个以 (radius, xCenter, yCenter) 表示的圆和一个与坐标轴平行的矩形 (x1…

第三方医药数据供应商有哪些?--数据业务介绍

第三方医药数据供应商主要是为医药企业、健康机构、学术研究、药物研发等提供医药相关数据的收集、整理、分析和应用服务。随着医药市场的需求衍生了许多各高垂直领域的医药数据供应商&#xff0c;这也导致了大家对医药数据供应商涉及领域认识的片面性。 故本文重点介绍各医药…

SpringBoot 如何使用 YourKit 进行性能调优

SpringBoot 如何使用 YourKit 进行性能调优 前言 在应用程序的开发过程中&#xff0c;性能调优是一个重要的环节。如果应用程序的性能不佳&#xff0c;可能会影响用户的体验&#xff0c;甚至导致系统崩溃。而在 Spring Boot 应用程序中&#xff0c;我们可以使用 YourKit 来进…

同比增长超500% 威睿公司三电产品4月装机量增势迅猛

近期&#xff0c;2023年4月装机量数据全新出炉&#xff0c;威睿公司在电驱动系统、电机控制器、驱动电机、PACK、BMS等多个装机量榜单中跻身前十位&#xff0c;同比增长均超过100%。其中电驱动系统装机量位列第六位&#xff0c;电驱动系统、电机控制器、驱动电机装机量同比增长…

本地离线安装Selenium

1、去官网&#xff08;下载地址:https://pypi.org/project/selenium/#history&#xff09;去下载selenium版本 2、此处建议大家下载selenium的3.0的版本&#xff0c;我给的地址可以让你直接进入选择历史版本的跳转页面。 3、往下拉&#xff0c;到3左右的版本&#xff0c;点击版…

【Docker】Docker Compose详解

文章目录 概述Docker Compose介绍Docker Compose安装一、下载Docker Compose&#xff1a;二、授权三、快速上手第一步、创建python服务第二步&#xff0c;创建 Dockerfile第三步&#xff0c;使用 Compose 文件定义一个服务第四步、使用 Compose 编译启动应用 Docker Compose常用…

【JUC进阶】04. 无锁CAS

目录 1、前言 2、CAS概念和原理 2.1、什么是CAS 2.2、CAS原理 2.3、工作方式 2.4、无锁CAS优势 3、unsafe类 4、ABA问题 4.1、什么是ABA问题 4.2、解决ABA问题 4.2.1、版本号机制 4.2.2、AtomicStampReference 5、CAS适用的场景 1、前言 无锁的Compare and Swap&…

libevent(9)通过libevent实时监听文件的更新

这里我们利用libevent监听centos系统上的login日志文件&#xff0c;文件路径&#xff1a;/var/log/secure。&#xff08;ubuntu下是"/var/log/auth.log"&#xff09; 代码如下 test_file.cpp&#xff1a; #include <iostream> #include <thread> #inclu…

数据迁移ETL工具分享

1.概述 ETL(是Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程)&#xff0c;对于企业应用来说&#xff0c;我们经常会遇到各种数据的处理、转换、迁移的场景。 我汇总了一些目前市面上比较常用的ETL数据迁移工具&#xff0c;希望对你会有所帮助。 2. …

华为OD机试真题 Java 实现【核酸检测人员安排】【2023Q1 100分】

一、题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为N人/小时。 由于外界变化&#xff0c;采样员的效率会以M人/小时为粒度发生变化&#xff0c;M为采样效率浮动粒度&#xff0c;M N * 10…

云数据库是未来趋势,亚马逊云科技位居Gartner报告“领导者”

最近,数据库领域发生了一个大事件,可以称得上是一座里程碑。全球最具权威的IT研究公司Gartner最近发布了一个消息:在2022年的全球DBMS市场份额中,亚马逊云科技的数据库超越微软,登顶第一。 亚马逊云科技、微软、Oracle这三巨头近几年一直排名前三,占据了全球DBMS超过三分之二的…