Easy 383. Ransom Note
題目連結
難度:Easy
給定兩個字串
ransomNote
和 magazine
,判斷 magazine
中的字串是否可以用來組成 ransomNote
。PS:每個字母只能使用一次example:限制
1 <= ransomNote.length, magazine.length <= 10^5
ransomNote
和magazine
只包含小寫英文字母
Hash Table
String
Counting
解題思路
解題步驟很直觀:
- 先統計 magazine 中每個字母的數量
- 檢查 ransomNote 中的每個字母,每使用一個就從計數中減去一個
- 如果某個字母的數量不足,就表示無法構成
程式碼實作
複雜度分析
- 時間複雜度: O(m + n)
- m 是 magazine 的長度
- n 是 ransomNote 的長度
- 需要遍歷兩個字串各一次
- 空間複雜度: O(1)
- 雖然使用了 Map
- 但因為只有 26 個小寫字母
- 所以空間是常數
解題心得
- 資料結構的選擇
- 使用 new Map() 來建立 Map 物件,並且 Map 預設就可以避免全域污染
- 也有 get/set 方法,可以方便的存數值和修改
::