第11日:有效的字母异位词
题目链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn96us/
题目:
给定两个字符串 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 字符怎么办?你能否调整你的解法来应对这种情况?
解题:
-
排序比较
大致思路:
将两个字符串中的字符排序,然后再根据对应下标一一比对
详细代码如下:
public boolean isAnagram(String s, String t) { if (s.length()!=t.length()) return false; char[] sc = s.toCharArray(); char[] tc = t.toCharArray(); Arrays.sort(sc); Arrays.sort(tc); for (int i = 0; i < sc.length; i++) { if (sc[i]!=tc[i])return false; } return true; }
-
使用数组记录
大致思路:
遍历字符串,将
s中出现的字符和t中出现的字符在对应数组位置中分别进行+和-操作;详细代码如下:
public boolean isAnagram(String s,String t){ if (s.length()!=t.length()) return false; int[] arr=new int[26]; char[] sc = s.toCharArray(); char[] tc = t.toCharArray(); for (int i = 0; i < sc.length; i++) { arr[sc[i]-'a']++; arr[tc[i]-'a']--; } for (int i = 0; i < arr.length; i++) { if (arr[i]!=0) return false; } return true; }

本文解析了如何使用Python解决LeetCode上的字母异位词问题,通过排序和数组计数两种方法,讨论了如何确保字符串中字符出现次数相等。实例演示了如何应对不同长度字符串及Unicode字符的挑战。
1436

被折叠的 条评论
为什么被折叠?



