①哈希表作用简单介绍
1.哈希法是:空间换时间
利用辅助数组(容器)记录数据,再对这些数据处理。
通俗讲:利用辅助数组处理问题(并且要达到提高时间性能)
常用的哈希结构:数组、set容器、map容器。
2.哈希表深入理解
②本题哈希法思路
1.数组作为哈希结构
本题26个字母,只需要26个索引,索引是有限的。数组作为哈希结构,效率最高!
当然,set和map也行。只是这里数组效率最高
2.哈希表的意义
一开始表示统计s的哈希表
Ⅰ:下标表示字母
0表示'a',25表示'z')
Ⅱ:值表示 出现的次数
最终表示s-t的哈希表(s减去t)
如果是字母异位词,那么整个哈希表的值都应该是0
3.本题总体思路
Ⅰ:遍历s,统计描述s的哈希表。
Ⅱ:遍历t,s哈希表相应的次数被减。当值结果不为0,则说明不是字母异位词
如果值为负数,就说明了t的某个字母比s的多!
③代码实现
class Solution {
public:
bool isAnagram(string s, string t)
{
int Hash[26]={0};
for(const auto &i:s){
Hash[int(i-'a')]++;//一开始统计 s 的哈希表(统计哈希表)
}
for(const auto &i:t){
Hash[int(i-'a')]--;//最终哈希表(处理哈希表)
}
for(const auto &h:Hash){
if(h!=0)return false;//检验哈希表是否满足
}
return true;
}
};