242. 有效的字母异位词https://leetcode.cn/problems/valid-anagram/
1、题目
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词(字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次)。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
提示:
1 <= s.length, t.length <=
s
和t
仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
2、题解
数组统排序
class Solution {public boolean isAnagram(String s, String t) {// 获取两个字符串的长度int lengthS = s.length();int lengthT = t.length();// 如果长度不同,直接返回 false,因为两个字符串的字母数量必须相同if (lengthS != lengthT) {return false;}// 创建一个长度为26的数组,用于记录每个字母的出现次数int[] record = new int[26];// 遍历第一个字符串 s,增加对应字符的计数for (int i = 0; i < lengthS; i++) {record[s.charAt(i) - 'a']++; // 通过字符减去'a'得到索引位置,将该位置的计数加一}// 遍历第二个字符串 t,减少对应字符的计数for (int i = 0; i < lengthT; i++) {record[t.charAt(i) - 'a']--; // 通过字符减去'a'得到索引位置,将该位置的计数减一}// 遍历记录数组,检查所有的计数是否都为零// 如果有任何一个位置的计数不为零,说明 s 和 t 字符的数量不匹配for (int i = 0; i < 26; i++) {if (record[i] != 0) {return false; // 如果发现有不匹配的字符计数,返回 false}}// 如果所有字符计数都匹配,则返回 truereturn true;}
}