一、题目描述
题目原文:
Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function
that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.
Each letter in the magazine string can only be used once in your ransom note.
(给出两个名为ransomNote和magazine的字符串,判断ransomNote是否可以由magazine构成。
在magazine中的每个元素只能被ransomNote用一次。)
二、题目分析
思路:循环ransomNote的每个元素个数,只要每个元素个数都小于对应magazine的元素个数即可。
(用have_done列表存放已经判断过的元素,避免重复判断,用于优化时间)
三、Python代码
class Solution(object): def canConstruct(self, ransomNote, magazine): """ :type ransomNote: str :type magazine: str :rtype: bool """ have_done = [] for i in range(0, len(ransomNote)): if ransomNote[i] not in have_done: if ransomNote.count(ransomNote[i]) <= magazine.count(ransomNote[i]): pass else: return False have_done.append(ransomNote[i]) else: continue return True
四、其他
题目链接:https://leetcode.com/problems/ransom-note/
Runtime: 56 ms
想法不够优化,欢迎大家留言交流~