脚本宝典收集整理的这篇文章主要介绍了力扣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,则说明两个字符串互为字母异位词。
代码:
二、排序
先判断两个字符串长度是否相等,不相等直接返回false,再将两个字符串转换为字符数组,对两个字符串进行排序,再对两个字符串进行判断是否相等,相等则互为字母异位词。
代码:
进阶版:
看的官方的解答,小白我还想不到这个,不明白进阶的意思😅
对于进阶问题,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。
以上是脚本宝典为你收集整理的力扣242(java)-有效的字母异位词(简单)全部内容,希望文章能够帮你解决力扣242(java)-有效的字母异位词(简单)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。