```java
class Solution {
//首先分析数据的特点,变为词组的特点在于变为词中字符出现的次数都是一致的
//由于hash表是插入和查询的操作都是O(1)操作的数据结构,所以我们可以使用一个hash表记录下来每个字符出现的次数,另一个单词减去hash表中出现的次数来解题
public boolean isAnagram(String s, String t) {
//判断参数,如果两个词连长度都不一样就没有比较的必要
if(s.length() != t.length()){
return false;
}
//避免完全相同的情况
if(s.equals(t)){
return false;
}
HashMap<Character,Integer> map = new HashMap<>();
//否则遍历第一个单词记录下来单词中字符出现的次数
for(char c : s.toCharArray()){
map.put(c,map.getOrDefault(c,0) + 1);
}
//第二个字符串中则对单词出现的次数做一个相减的操作,一旦发现没有可以减去的单词就返回false
for(char c : t.toCharArray()){
//如果该map中不存在元素或者遍历到元素的个数已经是0则返回false
if(!map.containsKey(c) || map.get(c) == 0){
return false;
}
map.put(c,map.get(c) - 1);
}
return true;
}
}