給定兩字符串 s、t(僅含小寫字母),判斷 t 是否為 s 的異位詞(字母重新排列)。
false。cnt,遍歷 s 做 ++,遍歷 t 做 --。cnt[i] < 0,說明 t 某字母過多,返回 false。true(長度相同且無負值 ⇒ 全為 0)。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) if (--cnt[c - 'a'] < 0) return false;
return true;
}
};
O(n),空間 O(1)(固定 26 整數)。unordered_map,空間 O(k)(k 為不同字符數)。O(n log n) 也可接受但非最優。異位詞判斷的核心是「字符多集合相等」。定長計數陣列利用字符集小的特性,實現最優線性時間、常數空間。面試中常作為哈希表/計數排序的入門考點。