题目:
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
思路:使用哈希表记录s中每个字母出现的次数,再扫描t中的每个字母,若字母出现在哈希表key中,则减一;若不在key中或者value为0,则不是字母异位词。
代码:
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
}//长度不同
Map<Character,Integer> map=new HashMap<>();
for(char c:s.toCharArray()){//记录s的所有字母次数
map.put(c,map.getOrDefault(c,0)+1);
}
for(char c:t.toCharArray()){
if(!map.containsKey(c)||map.get(c)==0){ 如果哈希表中不存在字符 c 或者次数已经减到 0,则不是字母异位词
return false;
}
map.put(c,map.get(c)-1);
}
return true;
}