问题
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
思路
可以只利用一个长度为 26 的字符数组,将出现在字符串 s 里的字符个数加 1,而出现在字符串 t 里的字符个数减 1,最后判断每个小写字母的个数是否都为 0。
代码
public boolean isAnagram(String s, String t) {
int[] Counts = new int[26];
for (char ch : s.toCharArray()) {
//字符转数字小技巧
Counts[ch - 'a']++;
}
for (char ch : t.toCharArray()) {
Counts[ch - 'a']--;
}
for (int i = 0; i < 26; i++) {
if (Counts[i] != 0) {
return false;
}
}
return true;
}