题目链接:https://leetcode.cn/problems/valid-anagram/
思路如下:
如果字符串 s
的长度不等于字符串 t
的长度,则直接返回 false。
在两个字符串长度相等的情况下,遍历字符串 s
,相应字母的出现次数加
1
1
1;遍历字符串 t
,相应字母的出现次数减
1
1
1。如果发现某个字母的出现次数小于
0
0
0,则返回 false。
C++代码如下:
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()) return false;
unordered_map<char, int> p;
for (auto& x : s) {
p[x]++;
}
for (auto& x : t) {
p[x]--;
if (p[x] < 0) {
return false;
}
}
return true;
}
};