Skip to content

Commit ff02321

Browse files
committed
feat: add solutions to lc problem: No.1419
No.1419.Minimum Number of Frogs Croaking
1 parent 8ccdd82 commit ff02321

File tree

6 files changed

+403
-2
lines changed

6 files changed

+403
-2
lines changed

solution/1400-1499/1419.Minimum Number of Frogs Croaking/README.md

+140-1
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,161 @@
6060

6161
<!-- 这里可写通用的实现逻辑 -->
6262

63+
维护 croak 的个数,如果遇到当前字母,则肯定是由前面字母过来,前面字母数减 1。如遇到 r,则必是 `c->r`,所以 c 减 1。
64+
65+
k 代表结尾,表示一次喊叫结束,所以遇到 c 的时候,先去消耗 k,没有 k 了,需要新青蛙,ans 加 1。
66+
6367
<!-- tabs:start -->
6468

6569
### **Python3**
6670

6771
<!-- 这里可写当前语言的特殊实现逻辑 -->
6872

6973
```python
70-
74+
class Solution:
75+
def minNumberOfFrogs(self, croakOfFrogs: str) -> int:
76+
c = r = o = a = k = ans = 0
77+
for ch in croakOfFrogs:
78+
if ch == 'c':
79+
c += 1
80+
if k > 0:
81+
k -= 1
82+
else:
83+
ans += 1
84+
elif ch == 'r':
85+
r += 1
86+
c -= 1
87+
elif ch == 'o':
88+
o += 1
89+
r -= 1
90+
elif ch == 'a':
91+
a += 1
92+
o -= 1
93+
else:
94+
k += 1
95+
a -= 1
96+
if c < 0 or r < 0 or o < 0 or a < 0:
97+
return -1
98+
return -1 if c != 0 or r != 0 or o != 0 or a != 0 else ans
7199
```
72100

73101
### **Java**
74102

75103
<!-- 这里可写当前语言的特殊实现逻辑 -->
76104

77105
```java
106+
class Solution {
107+
public int minNumberOfFrogs(String croakOfFrogs) {
108+
int c = 0, r = 0, o = 0, a = 0, k = 0;
109+
int ans = 0;
110+
for (char ch : croakOfFrogs.toCharArray()) {
111+
if (ch == 'c') {
112+
++c;
113+
if (k > 0) {
114+
--k;
115+
} else {
116+
++ans;
117+
}
118+
} else if (ch == 'r') {
119+
++r;
120+
--c;
121+
} else if (ch == 'o') {
122+
++o;
123+
--r;
124+
} else if (ch == 'a') {
125+
++a;
126+
--o;
127+
} else {
128+
++k;
129+
--a;
130+
}
131+
if (c < 0 || r < 0 || o < 0 || a < 0) {
132+
return -1;
133+
}
134+
}
135+
return c == 0 && r == 0 && o == 0 && a == 0 ? ans : -1;
136+
}
137+
}
138+
```
139+
140+
### **C++**
141+
142+
```cpp
143+
class Solution {
144+
public:
145+
int minNumberOfFrogs(string croakOfFrogs) {
146+
int c = 0, r = 0, o = 0, a = 0, k = 0, ans = 0;
147+
for (char ch : croakOfFrogs)
148+
{
149+
if (ch == 'c')
150+
{
151+
++c;
152+
if (k > 0) --k;
153+
else ++ans;
154+
}
155+
else if (ch == 'r')
156+
{
157+
++r;
158+
--c;
159+
}
160+
else if (ch == 'o')
161+
{
162+
++o;
163+
--r;
164+
}
165+
else if (ch == 'a')
166+
{
167+
++a;
168+
--o;
169+
}
170+
else
171+
{
172+
++k;
173+
--a;
174+
}
175+
if (c < 0 || r < 0 || o < 0 || a < 0) return -1;
176+
}
177+
return c == 0 && r == 0 && o == 0 && a == 0 ? ans : -1;
178+
}
179+
};
180+
```
78181
182+
### **Go**
183+
184+
```go
185+
func minNumberOfFrogs(croakOfFrogs string) int {
186+
c, r, o, a, k, ans := 0, 0, 0, 0, 0, 0
187+
for i := range croakOfFrogs {
188+
ch := croakOfFrogs[i]
189+
if ch == 'c' {
190+
c++
191+
if k > 0 {
192+
k--
193+
} else {
194+
ans++
195+
}
196+
} else if ch == 'r' {
197+
r++
198+
c--
199+
} else if ch == 'o' {
200+
o++
201+
r--
202+
} else if ch == 'a' {
203+
a++
204+
o--
205+
} else {
206+
k++
207+
a--
208+
}
209+
if c < 0 || r < 0 || o < 0 || a < 0 {
210+
return -1
211+
}
212+
}
213+
if c == 0 && r == 0 && o == 0 && a == 0 {
214+
return ans
215+
}
216+
return -1
217+
}
79218
```
80219

81220
### **...**

solution/1400-1499/1419.Minimum Number of Frogs Croaking/README_EN.md

+136-1
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,148 @@ The second frog could yell later &quot;cr<strong>c</strong>oak<strong>roak</stro
5757
### **Python3**
5858

5959
```python
60-
60+
class Solution:
61+
def minNumberOfFrogs(self, croakOfFrogs: str) -> int:
62+
c = r = o = a = k = ans = 0
63+
for ch in croakOfFrogs:
64+
if ch == 'c':
65+
c += 1
66+
if k > 0:
67+
k -= 1
68+
else:
69+
ans += 1
70+
elif ch == 'r':
71+
r += 1
72+
c -= 1
73+
elif ch == 'o':
74+
o += 1
75+
r -= 1
76+
elif ch == 'a':
77+
a += 1
78+
o -= 1
79+
else:
80+
k += 1
81+
a -= 1
82+
if c < 0 or r < 0 or o < 0 or a < 0:
83+
return -1
84+
return -1 if c != 0 or r != 0 or o != 0 or a != 0 else ans
6185
```
6286

6387
### **Java**
6488

6589
```java
90+
class Solution {
91+
public int minNumberOfFrogs(String croakOfFrogs) {
92+
int c = 0, r = 0, o = 0, a = 0, k = 0;
93+
int ans = 0;
94+
for (char ch : croakOfFrogs.toCharArray()) {
95+
if (ch == 'c') {
96+
++c;
97+
if (k > 0) {
98+
--k;
99+
} else {
100+
++ans;
101+
}
102+
} else if (ch == 'r') {
103+
++r;
104+
--c;
105+
} else if (ch == 'o') {
106+
++o;
107+
--r;
108+
} else if (ch == 'a') {
109+
++a;
110+
--o;
111+
} else {
112+
++k;
113+
--a;
114+
}
115+
if (c < 0 || r < 0 || o < 0 || a < 0) {
116+
return -1;
117+
}
118+
}
119+
return c == 0 && r == 0 && o == 0 && a == 0 ? ans : -1;
120+
}
121+
}
122+
```
123+
124+
### **C++**
125+
126+
```cpp
127+
class Solution {
128+
public:
129+
int minNumberOfFrogs(string croakOfFrogs) {
130+
int c = 0, r = 0, o = 0, a = 0, k = 0, ans = 0;
131+
for (char ch : croakOfFrogs)
132+
{
133+
if (ch == 'c')
134+
{
135+
++c;
136+
if (k > 0) --k;
137+
else ++ans;
138+
}
139+
else if (ch == 'r')
140+
{
141+
++r;
142+
--c;
143+
}
144+
else if (ch == 'o')
145+
{
146+
++o;
147+
--r;
148+
}
149+
else if (ch == 'a')
150+
{
151+
++a;
152+
--o;
153+
}
154+
else
155+
{
156+
++k;
157+
--a;
158+
}
159+
if (c < 0 || r < 0 || o < 0 || a < 0) return -1;
160+
}
161+
return c == 0 && r == 0 && o == 0 && a == 0 ? ans : -1;
162+
}
163+
};
164+
```
66165
166+
### **Go**
167+
168+
```go
169+
func minNumberOfFrogs(croakOfFrogs string) int {
170+
c, r, o, a, k, ans := 0, 0, 0, 0, 0, 0
171+
for i := range croakOfFrogs {
172+
ch := croakOfFrogs[i]
173+
if ch == 'c' {
174+
c++
175+
if k > 0 {
176+
k--
177+
} else {
178+
ans++
179+
}
180+
} else if ch == 'r' {
181+
r++
182+
c--
183+
} else if ch == 'o' {
184+
o++
185+
r--
186+
} else if ch == 'a' {
187+
a++
188+
o--
189+
} else {
190+
k++
191+
a--
192+
}
193+
if c < 0 || r < 0 || o < 0 || a < 0 {
194+
return -1
195+
}
196+
}
197+
if c == 0 && r == 0 && o == 0 && a == 0 {
198+
return ans
199+
}
200+
return -1
201+
}
67202
```
68203

69204
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public:
3+
int minNumberOfFrogs(string croakOfFrogs) {
4+
int c = 0, r = 0, o = 0, a = 0, k = 0, ans = 0;
5+
for (char ch : croakOfFrogs)
6+
{
7+
if (ch == 'c')
8+
{
9+
++c;
10+
if (k > 0) --k;
11+
else ++ans;
12+
}
13+
else if (ch == 'r')
14+
{
15+
++r;
16+
--c;
17+
}
18+
else if (ch == 'o')
19+
{
20+
++o;
21+
--r;
22+
}
23+
else if (ch == 'a')
24+
{
25+
++a;
26+
--o;
27+
}
28+
else
29+
{
30+
++k;
31+
--a;
32+
}
33+
if (c < 0 || r < 0 || o < 0 || a < 0) return -1;
34+
}
35+
return c == 0 && r == 0 && o == 0 && a == 0 ? ans : -1;
36+
}
37+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
func minNumberOfFrogs(croakOfFrogs string) int {
2+
c, r, o, a, k, ans := 0, 0, 0, 0, 0, 0
3+
for i := range croakOfFrogs {
4+
ch := croakOfFrogs[i]
5+
if ch == 'c' {
6+
c++
7+
if k > 0 {
8+
k--
9+
} else {
10+
ans++
11+
}
12+
} else if ch == 'r' {
13+
r++
14+
c--
15+
} else if ch == 'o' {
16+
o++
17+
r--
18+
} else if ch == 'a' {
19+
a++
20+
o--
21+
} else {
22+
k++
23+
a--
24+
}
25+
if c < 0 || r < 0 || o < 0 || a < 0 {
26+
return -1
27+
}
28+
}
29+
if c == 0 && r == 0 && o == 0 && a == 0 {
30+
return ans
31+
}
32+
return -1
33+
}

0 commit comments

Comments
 (0)