Easy 242. Valid Anagram
In this blog I will share a solution to the Valid Anagram problem.
題目連結
難度:Easy
給定兩個字串 s 和 t,判斷 t 是否為 s 的重組字(即字母重新排列後可以得到的字串)。Example 1:Example 2:
限制
- 1 <= s.length, t.length <= 5 * 10^4
- s 和 t 只包含小寫字母
String
Hash Table
Sorting
解題思路
要判斷兩個字串是否為重組字(Anagram),我們需要:
- 長度檢查
- 如果兩個字串長度不同,一定不是重組字
- 這是最基本且必要的檢查
- 字母頻率統計
- 使用 Map 記錄第一個字串中每個字母出現的次數
- 例如 "anagram" 會得到:
- 字母頻率驗證
- 檢查第二個字串的每個字母
- 如果字母不存在或次數為 0,代表不是重組字
- 每次檢查後減少該字母的計數
程式碼
複雜度分析
- 時間複雜度:O(n),只需要遍歷每個字串一次
- 空間複雜度:O(1),因為最多只需要 26 個字母的空間
解題重點
- 效能考量
- 使用 Map 提供最佳效能
- 提早返回可以避免不必要的運算
- 固定大小的空間複雜度
- 實作建議
- 先檢查基本條件(長度)
- 使用 Map 而不是物件,效能更好
- 善用提早返回來優化程式流程
#footer
String
Hash Table
::