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

【242. 有效的字母异位词 简单】

题目:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

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


思路:

利用unordered_map声明一个times来记录每个字符的出现次数。
遍历字符串s的时候,只需要将 times[i] 所在的元素做+1 操作即可,这样就将字符串s中字符出现的次数统计出来了。
同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。
那么最后检查一下, times中如果有的字符出现次数不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。
最后如果times中所有字符出现次数都为零0,说明字符串s和t是字母异位词,return true。


代码:

class Solution {
public:bool isAnagram(string s, string t) {unordered_map<char, int> times; for(auto i : s) {times[i]++; // 记录字符串s中每个字符出现次数}for(auto i : t) {times[i]--; // 字符串t中每个字符出现次数(负值)}for(auto it : times) {if(it.second != 0) return false;    //若s中出现次数和t中出现次数没抵消,则不为字符异位词}return true;}
};

总结:

时间复杂度 O(M+N) : 其 M , N 分别为字符串s和t长度。当 s和t无相同字符时,三轮循环的总迭代次数最多为 2M+2N ,使用 O(M+N) 线性时间。
空间复杂度 O(1) : 由于字符种类是有限的(常量),一般 ASCII 码共包含 128 个字符,因此可假设使用 O(1) 大小的额外空间。


参考:

代码随想录


http://www.mrgr.cn/news/742.html

相关文章:

  • 微服务:网关路由和登录校验
  • Angular网络请求
  • 显示窗口部件(Display Widgets)-Qt-思维导图-学习笔记
  • 从0开始搭建vue + flask 旅游景点数据分析系统(九):旅游景点管理之增删改查
  • Qt找不到QSound头文件,头文件QSoundEffect
  • 【面向对象】01类与对象及两者区别 简单认识方法
  • Python模块篇(五)
  • 推送本地windows环境镜像到阿里云镜像仓库
  • saas服务,对同一个功能,需要使用不同客户的接口。那么哪种设计模式可以解决我的问题?
  • 赋能未来制造:三品图文档管理软件在大连船推图文档管理中的深度应用与成效
  • CentOS 7的安装流程
  • jq8900-16p代码索引
  • Vue3+ElementUI中的Table组件的使用
  • 《SQL 中计算地理坐标两点间距离的魔法》
  • 《Ubuntu22.04环境下的ROS2学习笔记2》
  • WordPress 中 cURL 请求出现 504 网关超时错误的解决方法
  • 借助Vercel 十分钟搭建属于自己的AI应用站点
  • qt-17不规则窗体
  • 【微信小程序】生命周期
  • 数据结构——单链表