-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlc_1419.minimum-number-of-frogs-croaking.py
More file actions
68 lines (59 loc) · 2.09 KB
/
lc_1419.minimum-number-of-frogs-croaking.py
File metadata and controls
68 lines (59 loc) · 2.09 KB
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
class Solution:
def minNumberOfFrogs(self, croakOfFrogs: str) -> int:
l_counter = {'c': 0, 'r': 0, 'o': 0, 'a': 0}
def get_prev_l(currl: str) -> str:
return 'croak'['croak'.index(currl) - 1]
ans = 0
for l in croakOfFrogs:
if l == 'c':
l_counter['c'] += 1
ans = max(ans, sum(l_counter.values()))
else:
prev_l = get_prev_l(l)
if l_counter[prev_l] == 0:
return -1
l_counter[prev_l] -= 1
if l != 'k':
l_counter[l] += 1
if sum(l_counter.values()) > 0:
return -1
return ans
class InefficientSolution:
def minNumberOfFrogs(self, croakOfFrogs: str) -> int:
l_2_c = 'croak'
frogs = []
ans = 0
for l in croakOfFrogs:
match l:
case 'c':
frogs.append(1)
ans = max(ans, len(frogs))
case 'r':
try:
frog_i = frogs.index(1)
frogs[frog_i] += 1
except ValueError:
return -1
case 'o':
try:
frog_i = frogs.index(2)
frogs[frog_i] += 1
except ValueError:
return -1
case 'a':
try:
frog_i = frogs.index(3)
frogs[frog_i] += 1
except ValueError:
return -1
case 'k':
try:
frog_i = frogs.index(4)
del frogs[frog_i]
except ValueError:
return -1
case _:
return -1
if len(frogs) > 0:
return -1
return ans