242. Valid Anagram
題目網址:https://leetcode.cn/problems/valid-anagram/
題意:給兩 string
s
和t
, 返回t
是否為s
的字母異位詞(Anagram) 則返回true
, 其中s
和t
僅由小寫字母所組成。字母異位詞 (Anagram) 定義:若
s
和t
中每個字母的出現次數都相同, 則s
和t
互為字母異位詞。進階:若 input string 包含 Unicode char, 你要如何調整你的解法?
Solution 1:
想法:將
s
、t
進行排序, 若排序後s
、t
相等, 就代表為 anagram
class Solution { |
- time:$O(n \cdot log(n))$ ➔ sorting
- space:$O(1)$ ➔ 只需常數空間
Solution 2:
想法:利用 Array 來記錄每個字母的出現次數, 若
s
和t
為 anagram, 則s 中每個字母的出現頻率 - t 中每個字母的出現頻率
後, 每個字母的出現頻率應皆為 0e.g.
s = "abc"
,t = "cba"
class Solution { |
- time:$O(n)$ ➔ 遍歷
s
和t
- space:$O(1)$ ➔ $O(26)$, 只需常數空間
Solution 3:
想法:利用 hash table, 概念同 Solution 1, 但是 Solution 1 只能解決
s
和t
為小寫字母的問題, Solution 2 可解決 input string 包含 Unicode char 的問題
class Solution { |
- time:$O(n)$ ➔ 遍歷
s
和t
- space:$O(S)$ ➔ $S$ 為
s
和t
union 後的 char set 之元素個數, 本題的S = 26
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論