LeetCode242有效的字母异位词Easy
-
题目简述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
-
输入: s = “anagram”, t = “nagaram” 输出:true
输入: s = “rat”, t = “car” 输出:false
-
思路:题目本质是判断两个字符串包含的字符是否完全相同
利用哈希表存储出现的字符和对应出现的次数,分别遍历两个字符串,对于 s 往哈希表中增加相应字母的个数,对于 t 在哈希表中减少相应字母的个数,最后查看哈希表中每个字符出现的次数是否为0
class Solution {
public:
bool isAnagram(string s, string t) {
unordered_map<char, int> hash;
for(auto &c : s) hash[c]++;
for(auto &c : t) hash[c]--;
for(auto &x : hash)
{
if(x.second != 0)
return false;
}
return true;
}
};
//写法二
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> hash(26, 0);
for (auto c : s)
hash[c - 'a']++;
for (auto c : t)
hash[c - 'a']--;
for (int i = 0; i < 26; i++)
if (hash[i] != 0)
return false;
return true;
}
};