-
Notifications
You must be signed in to change notification settings - Fork 0
/
383.py
74 lines (58 loc) · 1.98 KB
/
383.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
'''
Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the letters from magazine and false otherwise.
Each letter in magazine can only be used once in ransomNote.
Example 1:
Input: ransomNote = "a", magazine = "b"
Output: false
Example 2:
Input: ransomNote = "aa", magazine = "ab"
Output: false
Example 3:
Input: ransomNote = "aa", magazine = "aab"
Output: true
Constraints:
1 <= ransomNote.length, magazine.length <= 105
ransomNote and magazine consist of lowercase English letters.
'''
# https://leetcode.com/problems/ransom-note/
import unittest
def can_construct(ransomNote, magazine):
magazine_dict = {}
for char in magazine:
if char in magazine_dict:
magazine_dict[char] += 1
else:
magazine_dict[char] = 1
for char in ransomNote:
if char in magazine_dict and magazine_dict[char] > 0:
magazine_dict[char] -= 1
else:
return False
return True
class TestRansomNote(unittest.TestCase):
def test_example1(self):
ransomNote = "a"
magazine = "b"
expected = False
# Call the function that solves the problem
result = can_construct(ransomNote, magazine)
# Assert that the result matches the expected output
self.assertEqual(result, expected)
def test_example2(self):
ransomNote = "aa"
magazine = "ab"
expected = False
# Call the function that solves the problem
result = can_construct(ransomNote, magazine)
# Assert that the result matches the expected output
self.assertEqual(result, expected)
def test_example3(self):
ransomNote = "aa"
magazine = "aab"
expected = True
# Call the function that solves the problem
result = can_construct(ransomNote, magazine)
# Assert that the result matches the expected output
self.assertEqual(result, expected)
if __name__ == '__main__':
unittest.main()