( 字符串) 242. 有效的字母异位词 ——【Leetcode每日一题】

news2024/11/26 12:43:37

❓242. 有效的字母异位词

难度:简单

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

注意:若 st 中每个字符出现的次数都相同,则称 st 互为字母异位词。

示例 1:

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

示例 2:

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

提示:

  • 1 < = s . l e n g t h , t . l e n g t h < = 5 ∗ 1 0 4 1 <= s.length, t.length <= 5 * 10^4 1<=s.length,t.length<=5104
  • st 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

💡思路:

方法一:排序

t s 的异位词等价于「两个字符串排序后相等」。

  • 因此我们可以对字符串 st 分别排序,看排序后的字符串是否相等即可判断。
  • 此外,如果 st 的长度不同,t必然不是 s 的异位词。

方法二:哈希映射

  1. 首先判断两个字符串长度是否相等,不相等则直接返回 false
  2. 若相等,则初始化 26 个字母哈希表;
  3. 遍历 s , 在对应位置增加;
  4. 再遍历 t 负责在对应位置减少,如果有一个哈希表的值都为 0,则返回false
  5. 都遍历完没有返回false,则为有效的字母异位词,返回true

🍁代码:(Java、C++)

方法一:排序
Java

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()) return false;
        char[] str1 = s.toCharArray();
        char[] str2 = t.toCharArray();
        Arrays.sort(str1);
        Arrays.sort(str2);
        return Arrays.equals(str1, str2);
    }
}

C++

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;
    }
};

方法二:哈希映射
Java

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()) return false;
        int[] chars = new int[26];
        for(char c : s.toCharArray()){
            chars[c - 'a']++;
        }
        for(char c : t.toCharArray()){
            if(--chars[c - 'a'] < 0) return false;
        }
        return true;
    }
}

C++

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

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 ns的长度;排序为: O ( n l o g ⁡ n ) O(nlog⁡n) O(nlogn)
  • 空间复杂度 O ( S ) O(S) O(S),其中 S 为字符集大小,此处 S = 26;排序为: O ( l o g ⁡ n ) O(log⁡n) O(logn)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

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

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

相关文章

【5天打卡】学习Lodash的第五天——总结篇

Lodash 含有 Array, Collection, Date, Function, Lang, Math, Number, Object, String 等多个功能模块&#xff0c;总共几百个功能函数。官方文档上以字典顺序排序&#xff0c;不容易总结记忆。通过这5天的学习&#xff0c;我们对这一框架进行总结。主要从lodash的使用优势和迷…

电磁波、射频通信基础知识科普,超通俗解释!

一、电磁波 电磁波是能量的一种&#xff0c;凡是高于绝对零度的物体&#xff0c;都会释出电磁波。电与磁可说是一体两面&#xff0c;电流会产生磁场&#xff0c;变动的磁场则会产生电流。变化的电场和变化的磁场构成了一个不可分离的统一的场。 在低频的电振荡中&#xff0c;…

XCTF-Web2

Web_php_include <?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) {$pagestr_replace("php://", "", $page); } include($page); ?>strstr() 查找字符串首次出现的位置&#xff0…

集合-ArrayList学习

1、特点&#xff1a; ArrayList 实现是一个动态数组&#xff0c;初始时是一个空数组。ArrayList 默认初始长度为0&#xff0c;在插入第一个元素的时候扩容为10&#xff0c;然后当数组存满的时候&#xff0c;数组会再次扩容&#xff0c;此时就扩容到原来的1.5倍。ArrayList 是线…

打造一个基于低代码的无代码平台,愿满足非专业人士的需求

一、开源项目简介 摸鱼低代码平台希望打造一个基于低代码的无代码平台。即能给程序员使用&#xff0c;也能满足非专业人士的需求。 后端基于Spring Cloud Alibaba注册中心、配置中心采用nacos当前版本完成oauth2统一认证接入持续进行功能完善 二、开源协议 使用Apache-2.0开…

人机交互到艺术设计及玫瑰花绘制实例

Python库之图形用户界面 Riverbank Computing | Introduction Welcome to wxPython! | wxPython Overview — PyGObject Python库之游戏开发 https://www.pygame.org/news Panda3D | Open Source Framework for 3D Rendering & Games python.cocos2d.org Python库之…

MATLAB科研数据可视化

互联网的飞速发展伴随着海量信息的产生&#xff0c;而海量信息的背后对应的则是海量数据。如何从这些海量数据中获取有价值的信息来供人们学习和工作使用&#xff0c;这就不得不用到大数据挖掘和分析技术。数据可视化分析作为大数据技术的核心一环&#xff0c;其重要性不言而喻…

scss、css样式中使用变量的方法;Vue动态改变css等样式文件中的变量

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.遇到一些样式 设置的值都是重复的不想重复写&#xff0c;想和js一样定义一个常量&#xff0c;然后直接引用这个常量。 2.想要在js中动态设置样式中的值&#xff0c;在 css、scss等样式表中直接使用。 二、原因及解…

nacos实战

spring cloud是一系列框架的有序集合&#xff0c;是分布式系统构建工具 服务领域模型 不同的组&#xff08;group&#xff09;之间不能调用&#xff0c;只能进行组内调用 namespace》group/service》cluster》instance 没有nacos的时候 微服务调用&#xff0c;可以直接使用Re…

React18开发总结(完善中)

遇到这样一个问题&#xff0c;初始化时用户登陆后需要获取到用户信息&#xff0c;但是发现获取用户信息这个接口触发了2次&#xff0c;这是不应该的&#xff0c;于是我查阅了一下资料&#xff0c;把自己的笔记记录下来。 还有就是使用mobx遇到的控制台警告问题&#xff0c;也一…

Python 中如何实现自动导入缺失的库?

在编写 Python 项目的时候&#xff0c;我们经常会遇到导入模块失败的错误&#xff1a; ImportError: No module named xxx或者ModuleNotFoundError: No module named xxx 导入失败&#xff0c;通常分为两种&#xff1a;一种是导入自己写的模块&#xff08;即以 .py 为后缀的文件…

你不想成长,生活总会逼着你成长,阿里P8架构师分享十年学习生涯

成为阿里P8&#xff0c;并不是一件容易的事情&#xff0c;我花了将近十年的时间&#xff0c;才达到了这样的目标。这十年间来&#xff0c;说辛苦也是真辛苦&#xff0c;但这些辛苦是让我感觉到满足的&#xff0c;毕竟这样的成功并不是人人都能够得来的。 为了成为阿里P8的这十…

Linux(ubuntu) 挂载磁盘

前言 很多博客写了一些格式化磁盘&#xff0c;分区等等&#xff0c;这和挂载磁盘的概念是混淆的。分区是为了安装系统&#xff0c;我们挂载磁盘肯定是已经安装好Ubuntu 系统了&#xff0c;分区干什么&#xff0c;误人子弟啊。 另外格式化磁盘并不是挂载磁盘必须的选项&#x…

55.网页设计规则#3_图片和插图

使用好的图片 图片类型 不同类型的图像&#xff1a;产品照片、故事性照片、插图、图案&#xff1b;使用图片来支持你网站的信息和故事。所以只使用相关的图片倾向于使用原始图片。如果不可能&#xff0c;请使用原始外观的图片&#xff08;而不是一般的图片&#xff01;&#…

Numpy方法总简单说明作用

NumPy的大部分代码都是用C语言写的&#xff0c;其底层算法在设计时就有着优异的性能&#xff0c;这使得NumPy比纯Python代码高效得多 NumPy&#xff08;Numerical Python&#xff09;是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵&#xff0c;比Python…

JAVAWeb10-Web 开发会话技术-Session-02

1. session 有什么用 ● 思考两个问题—抛砖引玉 不同的用户登录网站后&#xff0c;不管该用户浏览该网站的哪个页面&#xff0c;都可显示登录人的名字&#xff0c;还可以随时去查看自己的购物车中的商品, 是如何实现的?也就是说&#xff0c;一个用户在浏览网站不同页面时&a…

如何高效的学习接口自动化测试?从零开始学习接口自动化测试:选择合适的学习资源和编程语言

目录 引言&#xff1a; 一、学习前的准备 二、选择合适的学习资源 三、实践中学习 四、总结 引言&#xff1a; 在日常的软件开发过程中&#xff0c;接口自动化测试是一个非常重要的环节。接口自动化测试可以帮助我们快速准确地检测出软件中的缺陷&#xff0c;提高软件的质…

更简单的存取Bean方式-@Bean方法注解

1.Bean方法存储 类注解是添加在某个类上的,那么方法注解是添加在某个方法前的 public class UserBeans {Beanpublic User user1(){User user new User();user.setUid(001);user.setUname("zhangsan");user.setAge(19);user.setPassword("123123");retur…

Git/Github操作手册

Git 是目前最流行的版本管理工具&#xff0c;也是程序员的必备技能之一。 这里主要介绍一下git/github远程仓库的使用及相关配置&#xff1a; 一、SSH Keys SSH Keys是什么呢&#xff1f;简单来说相当于一把钥匙&#xff08;在机器中即电脑中进行配置&#xff09;&#xff0…

【Java数据结构】——第九节.向上建堆和向下建堆的区别

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;Java初阶数据结构 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目…