有效字母异位词力扣--242

embedded/2025/1/7 19:30:12/

目录

题目

思路

代码 


题目

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

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

思路

1.什么是异位词?

两个字符串中除了字母的顺序不一样以外,组成字符串的字母都一样。

2.怎么想到要使用哈希表?

相当于查找一个字母是否在集合中,自然想到哈希表。

3.暴力解法可否解出来?

用两个for循环,可以暴力解出来,时间复杂度是O(n^2)

4.用哈希表的思路

  • 关键是构造哈希函数,想到用一个数组存每个字母出现的次数,将出现的字母种类称作a,哈希表的长度称作b a不能大于b,特殊之处在于,是字母,且两个字符串都是小写的,a-z的ASCII码差为26,所以创建一个长度为26的就可以。
  • 先遍历一个字符串S,通过某种方式,找到存他的位置,出现一次位置上就+1,通过这种方法来得到他出现几次
  • 通过的方式:长度为26,所以数组必然是从0-25,只需要用得到的字母的ASCII码减去a的,就可以得到唯一确定的存储位置。
  • 接着遍历另一个字符串T,通过同样的方式找到唯一存储的位置索引,然后-1
  • 最后只需要遍历哈希表,如果所有元素都为0,那么返回true,否则不行(如果大于0,说明某个字母在S中出现比在T中多出现一次,如果小于0说明某个字母在T中比在S中多出现一次)

代码 

java">class Solution {public boolean isAnagram(String s, String t) {int[] c=new int[26];//创建长度为26的哈希表,让每个字母出现的次数都有唯一且确定的位置存放for(int i=0;i<s.length();i++){//遍历其中一个字符串c[s.charAt(i)-'a']++;//找到存放的位置,出现次数+1}for(int j=0;j<t.length();j++){//遍历另一个元素c[t.charAt(j)-'a']--;}for(int result:c){//遍历哈希表if(result!=0){return false;//不是}}  return true;//是} 
}
java">class Solution {public boolean isAnagram(String s, String t) {if(s.length() != t.length())//长度不一样,必然不是return false;int[] alpha = new int[26];for(int i = 0; i< s.length(); i++) {//有了上述判断只需要遍历一个字符串就可以了alpha[s.charAt(i) - 'a'] ++;alpha[t.charAt(i) - 'a'] --;}for(int i=0;i<26;i++)if(alpha[i] != 0)return false;return true;}
}


http://www.ppmy.cn/embedded/151770.html

相关文章

day23-编译LAMP

任务需求 一个初创小公司&#xff0c;业务不断在增长&#xff0c;用户注册数量也越来越多&#xff0c;为了满足用户体验&#xff0c;开发要优化网站&#xff0c;需要我们运维提供一个&#xff08;预生产环境&#xff09;&#xff0c;提供给开发运行调试程序。 并且要求是&…

libmodbus接收请求过程分析

文章目录 一、modbus_receive函数调用关系分析调用关系分析函数解析1. **modbus_receive**2. **_modbus_rtu_receive**3. **_modbus_receive_msg** 调用链关系图函数主要功能总结 二、_modbus_receive_msg详细分析函数详细分析与注释函数功能函数分段注释 核心功能 一、modbus_…

服务器开发 的泛型(Generics)基础知识

服务器开发的泛型&#xff08;Generics&#xff09;基础知识 在现代软件开发中&#xff0c;泛型&#xff08;Generics&#xff09;作为一种重要的编程原则和技术&#xff0c;已经在许多编程语言中得到广泛应用&#xff0c;如Java、C#、C等。特别是在服务器开发中&#xff0c;泛…

Kafka集群的常用命令与策略

一、查看topic bin/kafka-topics.sh --list --zookeeper node10:2181,node11:2181,node12:2181 二、查看topic状态 bin/kafka-topics.sh --describe --zookeeper node10:2181,node11:2181,node12:2181 --topic TestTopic 三、KAFKA常用配置 1、主题配置 &#xff08;1&am…

Next.js 多语言 (1) | 中间件(Middleware)的设置与应用

当我们开发一个支持多语言的 Next.js 网站时&#xff0c;常常需要解决以下问题&#xff1a; 用户首次访问时&#xff0c;应该显示哪个语言版本&#xff1f; &#x1f914; 比如&#xff0c;用户访问 / 时&#xff0c;是展示 /en 还是 /de&#xff1f; SEO 是否能够抓取所有语言…

Luma AI 简单几步生成视频

简单几步生成视频 登录我们的 AceDataPlatform 网站&#xff0c;按照下图所示即可生成高质量的视频&#xff0c;同时&#xff0c;我们也提供了简单易用的 API 方便集成调用&#xff0c;可以查看 Luma API了解详情 技术介绍 我们使用了 Luma 的技术&#xff0c;实现了上面的图…

【优选算法】Binary-Blade:二分查找的算法刃(上)

文章目录 1.概念解析2.二分查找的简单模版3.二分查找的进阶模版4.x的平方根5.搜索插入位置希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 本篇是优选算法之二分查找算法&#xff0c;该算法是一种高效的在有序数组中查找特定元素的搜索算法 1.概…

Vue2: table加载树形数据的踩坑记录

table中需要加载树形数据,如图: 官网给了两个例子,且每个例子中的tree-props都是这么写的: :tree-props="{children: children, hasChildren: hasChildren}" 给我一种错觉,以为数据结构中要同时指定children和hasChildren字段,然而,在非懒加载模式下,数据结…