原题链接:力扣242.有效字母的异位词
要记住的就是,需要判断元素是否出现过,或者是否在集合里存在,就可以考虑用哈希法去做
思路:
可以使用数组作为映射 使用hash法来进行对比
先进行对字符串s进行一次遍历,字符串中的每个字符减去 ‘a’ 时,就能得到当前字符对应的下标,此时下标++(出现次数+1).
再对字符串t进行一次遍历,依旧是每个字符减去’a’,就能得到当前字符对应的下标,此时下标–(出现次数-1)
最终如果数组hash内每个元素都的值都为0 则代表两个字符串出现的字符次数相同,因为相加又相减,返回true。若不为0,则代表出现的字符次数不同,故返回false
class Solution {
public:
bool isAnagram(string s, string t) {
//用数组做映射 范围是0~25 26个英文字母
int hash[26] = {0};
for(int i = 0; i < s.size(); i++)
{
hash[s[i] - 'a']++;
}
for(int i = 0; i< t.size(); i++)
{
hash[t[i] - 'a']--;
}
for(int i = 0; i < 26; i++)
{
if(hash[i] != 0)
{
return false;
}
}
return true;
}
};