题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
class Solution {
public:
bool isAnagram(string s, string t) {
// result 数组记录的不是每个字母。
// 两个字符串都遍历一遍,第一次遍历计+1,第二次遍历计数-1
// 这样如果相等,则result就是全0,否则就说明有不同的
// 为什么会有这样的思路呢?因为数组本身就可以相当于哈希表来用
// 字母一共也就26个,每一个单独记录,也不算太多,比较清晰的思路
// 也就是哈希值总共就26个,跨度也就26个
// 赞!!!
int result[26] = {0};
// 把26个元素全都初始化为0
int sSize=0;
int tSize=0;
while((sSize<s.size())||(tSize<t.size()))
{
// 第一个循环,出现某个字符时,则在这个位置上++
if(sSize<s.size())
{
result[s[sSize]-'a']++;
sSize++;
}
// 第二个循环,出现某个字符时,则在对应位置上--
if(tSize<t.size())
{
result[t[tSize]-'a']--;
tSize++;
}
}
for(int a:result)
{
if(a!=0)
return false;
}
// 刚刚迟疑了一下,说明这里的理解还是不到位呀
// 你想想,当出现非0,直接就return了,自然也就执行不到这里了
return true;
}
};