输入:两个字符串 s 和 t
要求:判断 t 是否为 s 的字母异位词(即两个字符串的字符种类和数量必须完全一致)
输出:true / false
思路:既然都是小写字母,那么只需要一个长度为 26 的计数数组。
在 s 中出现就 +1,在 t 中出现就 -1。
最后如果所有计数都回到 0,说明两个字符串完全一致。
复杂度:
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()) return false;
int cnt[26] = {0};
for (char c : s) cnt[c - 'a']++;
for (char c : t) cnt[c - 'a']--;
for (int x : cnt)
if (x != 0) return false;
return true;
}
};
451

被折叠的 条评论
为什么被折叠?



