代码实现:
计数法:
public boolean isAnagram(String s, String t) {
int[] arr = new int[26];
for (int i = 0; i < s.length(); i++){
char temp = s.charAt(i);
arr[temp - 'a'] ++;
}
for (int i = 0; i < t.length(); i++){
char temp = t.charAt(i);
arr[temp - 'a']--;
}
for (int i = 0; i < arr.length; i++){
if (arr[i] != 0){
return false;
}
}
return true;
}
map:
public boolean isAnagram2(String s, String t) {
Map<Character, Integer> map = new HashMap<>();
for (char ch : s.toCharArray()) {
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
for (char ch : t.toCharArray()) {
Integer count = map.get(ch);
if (count == null) {
return false;
} else if (count > 1) {
map.put(ch, count - 1);
} else {
map.remove(ch);
}
}
return map.isEmpty();
}
排序比较:
public boolean isAnagram1(String s, String t) {
char[] sChars = s.toCharArray();
char[] tChars = t.toCharArray();
Arrays.sort(sChars);
Arrays.sort(tChars);
return Arrays.equals(sChars, tChars);
}