给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
java 实现
class Solution {
public boolean isAnagram(String s, String t) {
//前两次提交分别使用了排序方法和哈希表使用数组的方法
//针对进阶问题,主要是unicode编码中可能含有非常多样的字符,不能再想刚才考虑字母一样定义一个26长度的数组
//可以使用hashmap,因为hashmap初始容量是16之后不够使用会再扩容,而且对应的哈希函数是将任意的字符都可以使用equals+hashcode映射到哈希表中
if(s.length()!=t.length()){
return false;
}
Map<Character,Integer> table = new HashMap<Character,Integer>();
for(int i = 0; i< s.length(); i++){
char ch = s.charAt(i);
table.put(ch,table.getOrDefault(ch,0)+1);
}
for(int j = 0;j<t.length();j++){
table.put(t.charAt(j),table.getOrDefault(t.charAt(j),0)-1);
if(table.get(t.charAt(j))<0){
return false;
}
}
return true;
}
}