题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
来源:力扣(LeetCode)
链接:leetcode.cn/problems/va…
哈希表:什么时候使用哈希表?
- 当我们遇到了要快速判断一个元素是否出现集合里的时候
- 需要判断一个元素是否出现过的
哈希的抽象性解释和解法
字母a-z的ASCII连续,利用该特点,将字母出现的次数按照a-z顺序依次映射给下表索引为0-25的数组元素。
即,数组是一张哈希表,表中按照(a-0,b-1,c-2...z-25)的哈希映射方式记录着a-z出现的元素个数。
代码
class Solution {
public:
bool isAnagram(string s, string t) {
int hash[26] = {0};
for(int i=0;i<s.size();i++){
hash[s[i]-'a']++;
}
for(int j=0;j<t.size();j++){
hash[t[j]-'a']--;
}
for(int h=0;h<26;h++){
if(hash[h]!=0){
return false;
}
}
return true;
}
};