LeetCode242. 有效的字母异位词(含有详细注释)三种方法

2024-01-01 03:08

本文主要是介绍LeetCode242. 有效的字母异位词(含有详细注释)三种方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

在这里插入图片描述

方法一:转换为字符数组,进行排序,排序后比较字符串数组是否相等

class Solution {public boolean isAnagram(String s, String t) {//先比较长度是否相等,如果不相等直接falseif (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);}}

方法二:
创建一个数组letters[]存储26个英文字母,表示字符串s中第i的英文字母出现的个数,
第一次遍历把字符串s出现的各个字符的次数存储在数组letters[]中(如letters[0]=1,代表s中出现a的次数为1一次),
第二次遍历把字符串t出现的各个字符依次减去s中出现的次数,如果letters[i]小于零了就返回false,直到最后返回true。

class Solution {public boolean isAnagram(String s, String t) {//先比较长度是否相等,如果不相等直接falseif(s.length()!=t.length()) {return false;}//创建letters数组,存储英文字母以及出现的次数int[] letters =new int[26];// 第一次遍历把字符串s出现的各个字符的次数存储在数组letters[]中(如letters[0]=1,代表s中出现a的次数为1一次),for (int i = 0; i < s.length(); i++) {letters[s.charAt(i)-'a']++;}//  第二次遍历把字符串t出现的各个字符依次减去s中出现的次数,如果letters[i]小于零了就返回false,直到最后返回true。for (int i = 0; i < s.length(); i++) {letters[t.charAt(i)-'a']--;if(letters[t.charAt(i)-'a']<0) {return false;}}return true;}

方法三:哈希表存储字符出现的个数

 class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length()) {return false;}//创建哈希表用来存储s中出现的字符及个数HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();for (int i = 0; i < s.length(); i++) {//获取s中第i个出现的字符char ch=s.charAt(i);//更新ch在hashMap中出现的次数,默认值为0,出现一次加1hashMap.put(ch, hashMap.getOrDefault(ch, 0)+1);}for (int i = 0; i < s.length(); i++) {char ch=t.charAt(i);//更新ch在hashMap中出现的次数,默认值为0,出现一次减1hashMap.put(ch, hashMap.getOrDefault(ch, 0)-1);//判断此时ch在hashMap中的个数,如果小于0返回falseif(hashMap.get(ch)<0) {return false;}}return true;}
}

这篇关于LeetCode242. 有效的字母异位词(含有详细注释)三种方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558008

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因