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

每日leetcode

242. 有效的字母异位词 - 力扣(LeetCode)

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词(字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次)。

示例 1:

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

示例 2:

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

提示:

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

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

思路

  1. 用哈希表存第一个字符串的字符出现次数,再遍历第二个字符串做减法,如果出现第二个字符串中有第一个字符串没有的字符,直接返回false。

代码实现

class Solution {
public:bool isAnagram(string s, string t) {unordered_map<char, int> letter_table;int ns = s.length(), nt = t.length();if(ns != nt) return false;for(int i = 0; i < ns; ++i) {if(letter_table.count(s[i]) == 0) letter_table[s[i]] = 1;else ++letter_table[s[i]];}for(int i = 0; i < nt; ++i) {if(letter_table.count(t[i])==0) return false;else {--letter_table[t[i]];}}for(unordered_map<char, int>::iterator it = letter_table.begin(); it != letter_table.end(); ++it) {if(it->second != 0) return false;}return true;}
};

复杂度分析

  • 时间复杂度:三次循环的时间复杂度从上到下分别是O(n1)、O(n2)、O(c)(C为出现的字符集规模),所以总的时间复杂度是O(n1+n2)。——ps.看完别人的题解后才想起来n1和n2若开始循环时必然相等,所以时间复杂度应该是O(n)的。
  • 空间复杂度:空间复杂度取决于哈希集合的大小,为O(c)。

题解

  • 果然还是有优化空间的,既然前面已经判断了两字符串长度是否相等,那么其实s和t的统计可以同时进行,这样就少一次循环(好吧其实计算时间也是一样的,但是看起来好看一点)。
http://www.xdnf.cn/news/7786.html

相关文章:

  • opencv的图像卷积
  • 物联网相关词汇
  • Pandas:数据分析步骤、分组函数groupby和基础画图
  • matlab二维随机海面模拟
  • C++之模板进阶(探索C++模板:非类型参数与特化技巧)
  • Linux网络 网络基础一
  • 山东大学高级程序设计期末复习
  • BERT、GPT-3与超越:NLP模型演进全解析
  • 大语言模型与人工智能:技术演进、生态重构与未来挑战
  • sqli-labs第二十关——POST—cookie注入
  • 十四、Hive 视图 Lateral View
  • RabbitMQ的其中工作模式介绍以及Java的实现
  • 【算法创新+设计】灰狼算法GWO+扰动算子,求解大规模TSP问题利器
  • [测试_3] 生命周期 | Bug级别 | 测试流程 | 思考
  • AI办公提效,Deepseek + kimi生成ppt
  • 《从零理解SNMP协议:网络监控系统的设计与实现》
  • JAVA项目中常见的注解总结
  • COMPUTEX 2025 | 广和通5G AI MiFi解决方案助力移动宽带终端迈向AI新未来
  • 电商系统搭建的关键细节与技术实践
  • 工作安排小K
  • springboot使用xdoc-report包导出word
  • 四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API
  • EtherNet/IP机柜内解决方案在医疗控制中心智能化的应用潜能和方向分析
  • aws平台s3存储桶夸域问题处理
  • c#中添加visionpro控件(联合编程)
  • 使用脚本备份和还原Windows环境变量
  • 【STM32】自定义打印函数
  • 浪潮服务器配置RAID和JBOD
  • centos系统redis-dump安装
  • Kotlin 极简小炒 P9 - 数组(数组的创建、数组元素的访问与修改、数组遍历、数组操作、多维数组、数组与可变参数)