1、排序
我们可以对字符串进行排序,比较两个字符串在排序之后是否相等。
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t;
}
};
2、哈希表
我们可以使用哈希表来记录两个字符串中每个元素出现的次数之差,最终我们检查数组,若全为 0 则说明两个数组互为字母异位词。
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> num(26);
for (char c: s) {
++num[c - 'a'];
}
for (char c: t) {
--num[c - 'a'];
}
return all_of(num.begin(), num.end(), [](int num) { return num == 0; });
}
};