# [LeetCode] Top Interview 150 Problems Solving # 383 Ransom Note

# Understanding the Problem

There are two strings give as parameters, `ransomNote` and `magazine`. I need to return `True` if `ransomNote` can be constructed with the characters of `magazine`. As an example,

```python
# sample 1
ransomNote = "ba"
magazine = "aab"
```

this sample above is `True` because ransomNote characters can be made with “ab” from `magazine`, but,

```python
# sample 2
ransomNote = "baa"
magazine = "ab"
```

this case comes with the output of `False` as `magazine` characters lack to form `ransomNote`.

# Approach

I was in between the decisions. One was to go with `pop()` method, which I do not know why I like this name of the method, and the other one was to go with `remove()`, which I recently got familiar with. But after a while trying to solve the problem, `pop()` was not friendly with me so I went with `remove()`.

I would chage first the `ransomNote` into a list in the form of which will be easier for me to handle with `remove()`, the for looping `magazine` string to check characters.

# Solution

```python
class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        l = list(ransomNote)
        for c in magazine:
            if c in l:
                l.remove(c)

        if len(l) == 0:
            return True
        return False
```

Characters from `magazine` will be checked if the same character exists in `list(ransomNote)`. If it does exist, the character will be remove from the list so the miss match won’t happen.

Finally, if the list has length 0, it means every character of `ransomNone` was used in `magazine`, thus it fulfills the instruction, which finishes by returning `True`

# Reflection

Other people were solving the problem with `count()` method, and some other were returning the function quicker by comparing the characters so the function will not have to check every character until the very end, which I had never thought of while solving this problem. I know I could do better though, hence will try it with shorter time and better efficiency.
