力扣242(java)-有效的字母异位词(简单)
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一、哈希映射【数组】
1.先判断两个字符串的长度是否相等,不相等直接返回false;
2.如果相等,则创建一个长度为26的频次数组count,来计算每个字符出现的次数,先遍历s中字符出现的次数,在遍历 t 减去count中对应字符出现的次数,如果数组的值都为0,则说明两个字符串互为字母异位词。
代码:
1 class Solution { 2 public boolean isAnagram(String s, String t) { 3 if(s.length() != t.length()){ 4 return false; 5 } 6 int[] count = new int[26]; 7 for(int i = 0; i < s.length(); i++){ 8 count[s.charAt(i) - 'a']++; 9 } 10 for(int i = 0; i< t.length(); i++){ 11 count[t.charAt(i) - 'a']--; 12 } 13 for(int i = 0; i < count.length; i++){ 14 if(count[i] != 0){ 15 return false; 16 } 17 } 18 return true; 19 } 20 }
二、排序
先判断两个字符串长度是否相等,不相等直接返回false,再将两个字符串转换为字符数组,对两个字符串进行排序,再对两个字符串进行判断是否相等,相等则互为字母异位词。
代码:
1 class Solution { 2 public boolean isAnagram(String s, String t) { 3 if(s.length() != t.length()){ 4 return false; 5 } 6 char[] str1 = s.toCharArray(); 7 char[] str2 = t.toCharArray(); 8 Arrays.sort(str1); 9 Arrays.sort(str2); 10 return Arrays.equals(str1, str2); 11 } 12 }
进阶版:
看的官方的解答,小白我还想不到这个,不明白进阶的意思😅
对于进阶问题,Unicode 是为了解决传统字符编码的局限性而产生的方案,它为每个语言中的字符规定了一个唯一的二进制编码。而 Unicode 中可能存在一个字符对应多个字节的问题,为了让计算机知道多少字节表示一个字符,面向传输的编码方式的UTF−8 和UTF−16 也随之诞生逐渐广泛使用,具体相关的知识读者可以继续查阅相关资料拓展视野,这里不再展开。
回到本题,进阶问题的核心点在于「字符是离散未知的」,因此我们用哈希表维护对应字符的频次即可。同时读者需要注意 Unicode 一个字符可能对应多个字节的问题,不同语言对于字符串读取处理的方式是不同的。
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/valid-anagram/solution/you-xiao-de-zi-mu-yi-wei-ci-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
小知识:
使用Arrays.equals(str1, str2)方法,比较两个数组元素是否相等
注意:如果两个数组元素值一样,但是两个数组对应位置元素不同,Arrays.equals返回结果是false。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)