Leetcode刷題日記 - #383 Ransom Note
題目請自行上Leetcode閱讀:https://leetcode.com/problems/ransom-note/
- HashTable:這題應該只要會讀題跟會HashTable就很容易,基本上就是想怎麼樣用雜誌裡面的字拼出勒索信的內容,那雜誌內的字母一定要多於勒索信的內容,想到這就是先去計算雜誌裡面的各種字母出現的次數,並且使用一個可以快速找到字母出現次數的資料結構就可以了。
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
dict = {}
# 先計算雜誌每個字母的數量
for c in magazine:
if c not in dict:
dict[c] = 0
dict[c] += 1
# 看雜誌字母數量夠不夠勒索信的內容
for c in ransomNote:
if c in dict:
if dict[c] == 0:
# 字母不夠用了!
return False
# 足夠的話就減少數量
dict[c] -= 1
else:
# 如果找不到字母就不可能拼出勒索信,直接回傳False
return False
return True # 通過所有測試,回傳True
結語:想要快速找到某物,就要想到HashTable很好用
Member discussion