给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104s和t仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解题答案
class Solution {
public boolean isAnagram(String s, String t) {
char[] char1 = s.toCharArray();
char[] char2 = t.toCharArray();
if (char1.length != char2.length) return false;
int[] letters = new int[26];
for (char c : char1) {
letters[c - 'a']++;
}
for (char c : char2) {
letters[c - 'a']--;
if (letters[c - 'a'] < 0) return false;
}
return true;
}
}
class Solution {
public boolean isAnagram(String s, String t) {
char[] char1 = s.toCharArray();
char[] char2 = t.toCharArray();
if (char1.length != char2.length) return false;
Map<Character, Integer> map = new HashMap<>();
for (char c : char1) {
Integer count = map.get(c);
count = count == null ? 1 : count + 1;
map.put(c, count);
}
for (char c : char2) {
Integer count = map.get(c);
if (count == null || count == 0) return false;
if (count == 1) {
map.remove(c);
} else {
map.put(c, count - 1);
}
}
return map.isEmpty();
}
}