383._ransom_note.md 1.3 KB
Newer Older
K
KEQI HUANG 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
### 383. Ransom Note

题目: 
<https://leetcode.com/problems/ransom-note/>


难度 : Easy



略微想了一下,用了一个dictionary来存magazine里面的单字出现的个数,然后来对应check是否可以用来组成ransomNote


K
KEQI HUANG 已提交
14
```python
K
KEQI HUANG 已提交
15 16 17 18 19 20 21
class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        """
        :type ransomNote: str
        :type magazine: str
        :rtype: bool
        """
K
KEQI HUANG 已提交
22
        maps = {}
K
KEQI HUANG 已提交
23
        for i in magazine:
K
KEQI HUANG 已提交
24 25
            if i in maps:
                maps[i] += 1
K
KEQI HUANG 已提交
26
            else:
K
KEQI HUANG 已提交
27
                maps[i] = 1
K
KEQI HUANG 已提交
28
        for i in ransomNote:
K
KEQI HUANG 已提交
29
            if i not in maps:
K
KEQI HUANG 已提交
30
                return False
K
KEQI HUANG 已提交
31 32 33
            else:
                maps[i] -= 1
                if maps[i] < 0:
K
KEQI HUANG 已提交
34
                    return False
K
KEQI HUANG 已提交
35 36
        return True
```
K
KEQI HUANG 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
解法2:

```python
class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        """
        :type ransomNote: str
        :type magazine: str
        :rtype: bool
        """
        magCounter = collections.Counter(magazine)
        ranCounter = collections.Counter(ransomNote)
        for k in ranCounter:
            if ranCounter.get(k) > magCounter.get(k):
                return False
        return True
```