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

今日leetCode 242.有效的字母异位词

242. 有效的字母异位词

示例 1:

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

示例 2:

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

提示:

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

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


  题解:

法一:排序(时间复杂度:O(nlogn))

先将字符串s与t转换为字符数组,而后将其数组内的元素排序后再进行比较,若比较结果返回为true,则符合题意。

代码实现:

class Solution{public boolean isAnagram(String s,String t) {if(s.length() != t.length()){return false;}char[] arr1 = s.toCharArray();char[] arr2 = t.toCharArray();Arrays.sort(arr1);Arrays.sort(arr2);return Arrays.equals(arr1,arr2);}
}

法二:哈希表

(时间复杂度:O(n)        空间复杂度:O(s),s为字符集大小)

我们可以维护一个长度为 26 的频次数组 table,先遍历记录字符串 s 中字符出现的频次,然后遍历字符串 t,减去 table 中对应的频次,如果出现 table[i]<0,则说明 t 包含一个不在 s 中的额外字符,返回 false 即可。

class Solution{public boolean isAnagram(String s,String t) {int[] arr = new int[26];for(int i = 0;i < s.length();i++) {arr[s.charAt(i) - 'a']++;}for(int i = 0;i < t.length();i++) {arr[t.charAt(i) - 'a']--;}for(int i = 0;i < arr.length;i++) {if(arr[i] != 0) {return false;}}return true;}
}

牛刀小试

383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false

示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

提示:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNote 和 magazine 由小写英文字母组成

其实与上一题相同的套路,只需改变一下判断条件即可得出最终结果!

class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] arr = new int[26];for(int i = 0;i < ransomNote.length();i++) {arr[ransomNote.charAt(i) - 'a']++;}for(int i = 0;i < magazine.length();i++) {arr[magazine.charAt(i) - 'a']--;}for(int i = 0;i < arr.length;i++){if(arr[i] > 0) {return false;}}return true;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 云服务器部署DB-GPT项目
  • .Net 执行Linux下多行shell命令方法
  • 无线领夹麦克风哪个牌子好,口碑最好的麦克风品牌,领夹麦推荐
  • 什么是数据资源?
  • ImportError: DLL load failed while importing _ssl: 找不到指定的模块的解决方法
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • 大模型从失败中学习 —— 微调大模型以提升Agent性能
  • 【贪心算法】贪心算法
  • 油耳用什么掏耳朵比较好?可视挖耳勺推荐平价
  • 【linux】 cd命令
  • DMA与AXI DMA ip
  • 【干货分享】Ftrans安全数据交换系统 搭建跨网数据传输通道
  • 工业大模型市场图谱:53个工业大模型全面梳理
  • CSS 笔记 1
  • 利用apache-pdfbox库修改pdf文件模板,进行信息替换
  • create-react-app做的留言板
  • Hexo+码云+git快速搭建免费的静态Blog
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Laravel核心解读--Facades
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux中的硬链接与软链接
  • redis学习笔记(三):列表、集合、有序集合
  • V4L2视频输入框架概述
  • Vim Clutch | 面向脚踏板编程……
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 从重复到重用
  • 基于Android乐音识别(2)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 实现简单的正则表达式引擎
  • 新书推荐|Windows黑客编程技术详解
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #### go map 底层结构 ####
  • #define
  • (02)Unity使用在线AI大模型(调用Python)
  • (26)4.7 字符函数和字符串函数
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (java)关于Thread的挂起和恢复
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (一)基于IDEA的JAVA基础10
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 服务 ServiceController
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET正则基础之——正则委托
  • @RequestBody的使用
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)