1 min read

Leetcode刷題日記 - #383 Ransom Note

Leetcode刷題日記 - #383 Ransom Note
Photo by Joan Gamell / Unsplash

題目請自行上Leetcode閱讀:https://leetcode.com/problems/ransom-note/

  1. 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很好用