一、思路
哈希表
二、解题方法
先统计s中不同字母的次数,再访问t中的字母,将与s中的相同字母的次数循环减1,直至为0.如果最后键值为0,则表示s和t中的字母次数相同,否则不同。
三、code
class Solution {
public:
bool isAnagram(string s, string t) {
unordered_map<char,int> count;
//统计字符串s中每个字符的出现次数
for (char c:s)
{
count[c]++;
}
for (char c1:t)//一个范围基于范围的循环,用于遍历字符串t中的每个字符。在每次循环迭代中,将当前字符赋值给变量c1。
{
count[c1]--;//对于字符串t中的每个字符,我们将在count中对应的计数值减一。
}
//for (const auto& pair:count)是一个范围基于范围的循环,用于遍历count中的每个键值对。在每次循环迭代中,将当前键值对赋值给变量pair。
//通过pair.first和pair.second来访问当前键值对的键和值。例如,pair.first表示当前键值对的键,pair.second表示当前键值对的值
for (const auto& pair:count)
{
if (pair.second != 0) return false;
}
return true;
}
};
=========================================================================学到的知识:
①for (char c1 : t) { count[c1]--; } 不仅可以count[]++,也可以count[]--来比较两个字符串是否相等
for (char c1 : t)
是一个范围基于范围的循环,用于遍历字符串t
中的每个字符。在每次循环迭代中,将当前字符赋值给变量c1
。
count[c1]--
是将count
中键为c1
的计数值减一。即,对于字符串t
中的每个字符,我们将在count
中对应的计数值减一。
②for (const auto& pair : count) { if (pair.second != 0) { return false; } }
for (const auto& pair : count)
是一个范围基于范围的循环,用于遍历count
中的每个键值对。在每次循环迭代中,将当前键值对赋值给变量pair
。
const auto& pair
是一个类型推导的变量声明,auto
用于自动推导变量的类型,const
表示变量是只读的,&
表示使用引用来避免不必要的复制。
pair
是一个std::pair
类型的对象,包含键和值的信息。pair.first
表示键,pair.second
表示对应的值。