26
26
<li>You may assume that both strings contain only lowercase letters.</li>
27
27
</ul >
28
28
29
-
30
29
## Solutions
31
30
32
31
<!-- tabs:start -->
36
35
``` python
37
36
class Solution :
38
37
def canConstruct (self , ransomNote : str , magazine : str ) -> bool :
39
- chars = {}
40
- for i in magazine:
41
- chars[i] = chars.get(i, 0 ) + 1
42
- for i in ransomNote:
43
- if not chars.get(i):
38
+ counter = Counter(magazine)
39
+ for c in ransomNote:
40
+ if counter[c] <= 0 :
44
41
return False
45
- chars[i ] -= 1
42
+ counter[c ] -= 1
46
43
return True
47
44
```
48
45
@@ -51,15 +48,15 @@ class Solution:
51
48
``` java
52
49
class Solution {
53
50
public boolean canConstruct (String ransomNote , String magazine ) {
54
- int [] chars = new int [26 ];
55
- for (int i = 0 , n = magazine. length(); i < n; ++ i) {
56
- int idx = magazine. charAt(i) - ' a' ;
57
- ++ chars[idx];
51
+ int [] counter = new int [26 ];
52
+ for (char c : magazine. toCharArray()) {
53
+ ++ counter[c - ' a' ];
58
54
}
59
- for (int i = 0 , n = ransomNote. length(); i < n; ++ i) {
60
- int idx = ransomNote. charAt(i) - ' a' ;
61
- if (chars[idx] == 0 ) return false ;
62
- -- chars[idx];
55
+ for (char c : ransomNote. toCharArray()) {
56
+ if (counter[c - ' a' ] <= 0 ) {
57
+ return false ;
58
+ }
59
+ -- counter[c - ' a' ];
63
60
}
64
61
return true ;
65
62
}
@@ -84,6 +81,24 @@ function canConstruct(ransomNote: string, magazine: string): boolean {
84
81
};
85
82
```
86
83
84
+ ### ** C++**
85
+
86
+ ``` cpp
87
+ class Solution {
88
+ public:
89
+ bool canConstruct(string ransomNote, string magazine) {
90
+ vector<int > counter(26);
91
+ for (char c : magazine) ++counter[ c - 'a'] ;
92
+ for (char c : ransomNote)
93
+ {
94
+ if (counter[ c - 'a'] <= 0) return false;
95
+ --counter[ c - 'a'] ;
96
+ }
97
+ return true;
98
+ }
99
+ };
100
+ ```
101
+
87
102
### **Go**
88
103
89
104
```go
0 commit comments