当前位置: 首页 > news >正文

C# 有效的字母异位词

242 有效的字母异位词

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

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

示例 1:

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

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

提示:

1 <= s.length, t.length <= 5 * 104
s 和 仅包含小写字母t

解决方案:

提供思路

1)暴力解法,两层for循环,同时还要记录字符是否重复出现,时间复杂度是 O(n^2)。

2)数组其实就是一个简单哈希表,而且这道题目中字符串只有小写字符,那么就可以定义一个数组,来记录字符串s里字符出现的次数。

需要定义一个多大的数组呢,定一个数组叫做record,大小为26 就可以了,初始化为0,因为字符a到字符z的ASCII也是26个连续的数值。

定义一个数组叫做record用来上记录字符串s里字符出现的次数。

需要把字符映射到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。

再遍历 字符串s的时候,只需要将 s[i] - ‘a’ 所在的元素做+1 操作即可,并不需要记住字符a的ASCII,只要求出一个相对数值就可以了。 这样就将字符串s中字符出现的次数,统计出来了。

那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。

那么最后检查一下,record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。

最后如果record数组所有元素都为零0,说明字符串s和t是字母异位词,return true。

上代码:

public class Solution
{public bool IsAnagram(string s, string t){int sl = s.Length, tl = t.Length;if (sl != tl) return false;int[] a = new int[26];for (int i = 0; i < sl; i++){a[s[i] - 'a']++;a[t[i] - 'a']--;}foreach (int i in a){if (i != 0)return false;}return true;}
}

以上是碰到的第二百四十二题,后续持续更新。感觉对你有帮助的小伙伴可以帮忙点个赞噢!
在这里插入图片描述

http://www.lryc.cn/news/120762.html

相关文章:

  • R语言安装包Seurat
  • vue2中使用mixins(混入)和vue3中使用composable
  • 通过OpenTelemetry上报Python-flask应用数据(阿里云)
  • 使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行
  • 一篇文章搞懂如何使用JDBC操作数据库,还有JDBC进阶操作
  • 9.3.2.1网络原理(UDP)
  • 21、stm32使用LTDC驱动LCD
  • 合并两个有序链表
  • 深入了解Unity的Physics类:一份详细的技术指南(七)(上篇)
  • 数据结构与算法-数组(附阿里面试题)
  • k8s集群网络插件搭建——————解决集群notready(k8s1.20版本,docker24)
  • 有血有肉的PPT
  • 使用C语言实现UDP消息接收
  • 图片加水印
  • Nginx代理接口访问返回404
  • 湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序
  • Stable Diffusion AI绘图教学
  • 39、传输层的任务和协议
  • 系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】
  • 使用Matplotlib判断鼠标是否点击在当前线上的详细指南
  • http get、post、put
  • 仅使用 CSS 创建打字机动画效果
  • pytest fixture 高级使用
  • 远程控制医疗行业应用解析:如何满足医院合规需求?
  • 【C++】开源:glog日志库配置使用
  • 使用 React Native CLI 创建项目
  • 在R中将列表(list)转换为向量(vector)
  • access怎么做进销存?借助access开发进销存管理应用
  • css实现卡片的左上角有一个三角形的遮盖效果
  • 中间件RabbitMQ消息队列介绍