给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true示例 2:
输入: s = "rat", t = "car" 输出: false
/**
*key:字母,value:字母出现次数
*遍历s,出现一次次数加一
*遍历t,出现一次次数减一
*若value不全为0,则不是字母异位字
*/
class Solution {
public boolean isAnagram(String s, String t) {
HashMap<Character, Integer> map = new HashMap();
//长度要求一致
if(s.length() != t.length()){
return false;
}
//遍历s,字母出现次数增加
for(int i = 0; i < s.length(); i++){
//若该字母已存在,value + 1;不存在则将该字母出现次数设为1
if(map.containsKey(s.charAt(i))){
map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
}
else{
map.put(s.charAt(i), 1);
}
}
//遍历t,字母出现次数减少
for(int i = 0; i < t.length(); i++){
//若该字母已存在,value - 1;不存在则返回false
if(map.containsKey(t.charAt(i))){
map.put(t.charAt(i), map.get(t.charAt(i)) - 1);
//若该字母出现次数为0,则删去
if(map.get(t.charAt(i)) == 0){
map.remove(t.charAt(i));
}
}
else{
return false;
}
}
//不为空则表示有字母出现次数不一样
if(!map.isEmpty()){
return false;
}
else{
return true;
}
}
}