力扣242(java)-有效的字母异位词(简单)

发布时间:2022-06-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了力扣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 * 104s 和 t 仅包含小写字母 

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

来源:力扣(LeetCode)链接:https://leetcode.cn/problems/valid-anagram著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、哈希映射

1.先判断两个字符串的长度是否相等,不相等直接返回false;

2.如果相等,则创建一个长度为26的频次数组count,来计算每个字符出现的次数,先遍历s中字符出现的次数,在遍历 t 减去count中对应字符出现的次数,如果数组的值都为0,则说明两个字符串互为字母异位词。

力扣242(java)-有效的字母异位词(简单)

 代码:

力扣242(java)-有效的字母异位词(简单)

 

力扣242(java)-有效的字母异位词(简单)

 二、排序

先判断两个字符串长度是否相等,不相等直接返回false,再将两个字符串转换为字符数组,对两个字符串进行排序,再对两个字符串进行判断是否相等,相等则互为字母异位词

代码:

力扣242(java)-有效的字母异位词(简单)

力扣242(java)-有效的字母异位词(简单)

进阶版:

看的官方的解答,小白我还想不到这个,不明白进阶的意思😅

 对于进阶问题,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)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

力扣242(java)-有效的字母异位词(简单)

 小知识:

使用Arrays.equals(str1, str2)方法,比较两个数组元素是否相等

注意:如果两个数组元素值一样,但是两个数组对应位置元素不同,Arrays.equals返回结果是false。

脚本宝典总结

以上是脚本宝典为你收集整理的力扣242(java)-有效的字母异位词(简单)全部内容,希望文章能够帮你解决力扣242(java)-有效的字母异位词(简单)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: