给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
建立一个哈希表,索引为字母,值为字母出现的次数。
class Solution {
public:
bool isAnagram(const string& s, const string& t) {
if (s.length() != t.length()) {
return false;
}
vector<size_t> letter_times(26);
for (const auto& letter : s) {
size_t index = letter - 'a';
letter_times[index]++;
}
for (const auto& letter : t) {
size_t index = letter - 'a';
if (letter_times[index] <= 0) {
return false;
} else {
letter_times[index]--;
}
}
return true;
}
};
时间复杂度为O(n),空间复杂度为O(1)。