Skip to content

Commit 7129eb8

Browse files
committedMay 6, 2023
feat: add solutions to lc problem: No.0224
No.0224.Basic Calculator
1 parent e912f7d commit 7129eb8

File tree

10 files changed

+623
-91
lines changed

10 files changed

+623
-91
lines changed
 

‎solution/0200-0299/0224.Basic Calculator/README.md

+229-1
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,250 @@
5151

5252
<!-- 这里可写通用的实现逻辑 -->
5353

54+
**方法一:栈**
55+
56+
我们用一个栈 $stk$ 来保存当前的计算结果和操作符,用一个变量 $sign$ 保存当前的符号,变量 $ans$ 保存最终的计算结果。
57+
58+
接下来,我们遍历字符串 $s$ 的每一个字符:
59+
60+
- 如果当前字符是数字,那么我们用一个循环将后面的连续数字都读进来,然后用当前的符号将其加或者减到 $ans$ 中。
61+
- 如果当前字符是 `'+'`,我们修改变量 $sign$ 为正号。
62+
- 如果当前字符是 `'-'`,我们修改变量 $sign$ 为负号。
63+
- 如果当前字符是 `'('`,我们把当前的 $ans$ 和 $sign$ 入栈,并分别置空置 1,重新开始计算新的 $ans$ 和 $sign$。
64+
- 如果当前字符是 `')'`,我们弹出栈顶的两个元素,一个是操作符,一个是括号前计算好的数字,我们将当前的数字乘上操作符,再加上之前的数字,作为新的 $ans$。
65+
66+
遍历完字符串 $s$ 之后,我们返回 $ans$。
67+
68+
时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 是字符串 $s$ 的长度。
69+
5470
<!-- tabs:start -->
5571

5672
### **Python3**
5773

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

6076
```python
61-
77+
class Solution:
78+
def calculate(self, s: str) -> int:
79+
stk = []
80+
ans, sign = 0, 1
81+
i, n = 0, len(s)
82+
while i < n:
83+
if s[i].isdigit():
84+
x = 0
85+
j = i
86+
while j < n and s[j].isdigit():
87+
x = x * 10 + int(s[j])
88+
j += 1
89+
ans += sign * x
90+
i = j - 1
91+
elif s[i] == "+":
92+
sign = 1
93+
elif s[i] == "-":
94+
sign = -1
95+
elif s[i] == "(":
96+
stk.append(ans)
97+
stk.append(sign)
98+
ans, sign = 0, 1
99+
elif s[i] == ")":
100+
ans = stk.pop() * ans + stk.pop()
101+
i += 1
102+
return ans
62103
```
63104

64105
### **Java**
65106

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

68109
```java
110+
class Solution {
111+
public int calculate(String s) {
112+
Deque<Integer> stk = new ArrayDeque<>();
113+
int sign = 1;
114+
int ans = 0;
115+
int n = s.length();
116+
for (int i = 0; i < n; ++i) {
117+
char c = s.charAt(i);
118+
if (Character.isDigit(c)) {
119+
int j = i;
120+
int x = 0;
121+
while (j < n && Character.isDigit(s.charAt(j))) {
122+
x = x * 10 + s.charAt(j) - '0';
123+
j++;
124+
}
125+
ans += sign * x;
126+
i = j - 1;
127+
} else if (c == '+') {
128+
sign = 1;
129+
} else if (c == '-') {
130+
sign = -1;
131+
} else if (c == '(') {
132+
stk.push(ans);
133+
stk.push(sign);
134+
ans = 0;
135+
sign = 1;
136+
} else if (c == ')') {
137+
ans = stk.pop() * ans + stk.pop();
138+
}
139+
}
140+
return ans;
141+
}
142+
}
143+
```
144+
145+
### **C++**
146+
147+
```cpp
148+
class Solution {
149+
public:
150+
int calculate(string s) {
151+
stack<int> stk;
152+
int ans = 0, sign = 1;
153+
int n = s.size();
154+
for (int i = 0; i < n; ++i) {
155+
if (isdigit(s[i])) {
156+
int x = 0;
157+
int j = i;
158+
while (j < n && isdigit(s[j])) {
159+
x = x * 10 + (s[j] - '0');
160+
++j;
161+
}
162+
ans += sign * x;
163+
i = j - 1;
164+
} else if (s[i] == '+') {
165+
sign = 1;
166+
} else if (s[i] == '-') {
167+
sign = -1;
168+
} else if (s[i] == '(') {
169+
stk.push(ans);
170+
stk.push(sign);
171+
ans = 0;
172+
sign = 1;
173+
} else if (s[i] == ')') {
174+
ans *= stk.top();
175+
stk.pop();
176+
ans += stk.top();
177+
stk.pop();
178+
}
179+
}
180+
return ans;
181+
}
182+
};
183+
```
184+
185+
### **Go**
186+
187+
```go
188+
func calculate(s string) (ans int) {
189+
stk := []int{}
190+
sign := 1
191+
n := len(s)
192+
for i := 0; i < n; i++ {
193+
switch s[i] {
194+
case ' ':
195+
case '+':
196+
sign = 1
197+
case '-':
198+
sign = -1
199+
case '(':
200+
stk = append(stk, ans)
201+
stk = append(stk, sign)
202+
ans, sign = 0, 1
203+
case ')':
204+
ans *= stk[len(stk)-1]
205+
stk = stk[:len(stk)-1]
206+
ans += stk[len(stk)-1]
207+
stk = stk[:len(stk)-1]
208+
default:
209+
x := 0
210+
j := i
211+
for ; j < n && '0' <= s[j] && s[j] <= '9'; j++ {
212+
x = x*10 + int(s[j]-'0')
213+
}
214+
ans += sign * x
215+
i = j - 1
216+
}
217+
}
218+
return
219+
}
220+
```
221+
222+
### **TypeScript**
223+
224+
```ts
225+
function calculate(s: string): number {
226+
const stk: number[] = [];
227+
let sign = 1;
228+
let ans = 0;
229+
const n = s.length;
230+
for (let i = 0; i < n; ++i) {
231+
if (s[i] === ' ') {
232+
continue;
233+
}
234+
if (s[i] === '+') {
235+
sign = 1;
236+
} else if (s[i] === '-') {
237+
sign = -1;
238+
} else if (s[i] === '(') {
239+
stk.push(ans);
240+
stk.push(sign);
241+
ans = 0;
242+
sign = 1;
243+
} else if (s[i] === ')') {
244+
ans *= stk.pop() as number;
245+
ans += stk.pop() as number;
246+
} else {
247+
let x = 0;
248+
let j = i;
249+
for (; j < n && !isNaN(Number(s[j])) && s[j] !== ' '; ++j) {
250+
x = x * 10 + (s[j].charCodeAt(0) - '0'.charCodeAt(0));
251+
}
252+
ans += sign * x;
253+
i = j - 1;
254+
}
255+
}
256+
return ans;
257+
}
258+
```
259+
260+
### **C#**
69261

262+
```cs
263+
public class Solution {
264+
public int Calculate(string s) {
265+
var stk = new Stack<int>();
266+
int sign = 1;
267+
int n = s.Length;
268+
int ans = 0;
269+
for (int i = 0; i < n; ++i) {
270+
if (s[i] == ' ') {
271+
continue;
272+
}
273+
if (s[i] == '+') {
274+
sign = 1;
275+
} else if (s[i] == '-') {
276+
sign = -1;
277+
} else if (s[i] == '(') {
278+
stk.Push(ans);
279+
stk.Push(sign);
280+
ans = 0;
281+
sign = 1;
282+
} else if (s[i] == ')') {
283+
ans *= stk.Pop();
284+
ans += stk.Pop();
285+
} else {
286+
int num = 0;
287+
while (i < n && char.IsDigit(s[i])) {
288+
num = num * 10 + s[i] - '0';
289+
++i;
290+
}
291+
--i;
292+
ans += sign * num;
293+
}
294+
}
295+
return ans;
296+
}
297+
}
70298
```
71299

72300
### **...**

‎solution/0200-0299/0224.Basic Calculator/README_EN.md

+213-1
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,225 @@
5050
### **Python3**
5151

5252
```python
53-
53+
class Solution:
54+
def calculate(self, s: str) -> int:
55+
stk = []
56+
ans, sign = 0, 1
57+
i, n = 0, len(s)
58+
while i < n:
59+
if s[i].isdigit():
60+
x = 0
61+
j = i
62+
while j < n and s[j].isdigit():
63+
x = x * 10 + int(s[j])
64+
j += 1
65+
ans += sign * x
66+
i = j - 1
67+
elif s[i] == "+":
68+
sign = 1
69+
elif s[i] == "-":
70+
sign = -1
71+
elif s[i] == "(":
72+
stk.append(ans)
73+
stk.append(sign)
74+
ans, sign = 0, 1
75+
elif s[i] == ")":
76+
ans = stk.pop() * ans + stk.pop()
77+
i += 1
78+
return ans
5479
```
5580

5681
### **Java**
5782

5883
```java
84+
class Solution {
85+
public int calculate(String s) {
86+
Deque<Integer> stk = new ArrayDeque<>();
87+
int sign = 1;
88+
int ans = 0;
89+
int n = s.length();
90+
for (int i = 0; i < n; ++i) {
91+
char c = s.charAt(i);
92+
if (Character.isDigit(c)) {
93+
int j = i;
94+
int x = 0;
95+
while (j < n && Character.isDigit(s.charAt(j))) {
96+
x = x * 10 + s.charAt(j) - '0';
97+
j++;
98+
}
99+
ans += sign * x;
100+
i = j - 1;
101+
} else if (c == '+') {
102+
sign = 1;
103+
} else if (c == '-') {
104+
sign = -1;
105+
} else if (c == '(') {
106+
stk.push(ans);
107+
stk.push(sign);
108+
ans = 0;
109+
sign = 1;
110+
} else if (c == ')') {
111+
ans = stk.pop() * ans + stk.pop();
112+
}
113+
}
114+
return ans;
115+
}
116+
}
117+
```
118+
119+
### **C++**
120+
121+
```cpp
122+
class Solution {
123+
public:
124+
int calculate(string s) {
125+
stack<int> stk;
126+
int ans = 0, sign = 1;
127+
int n = s.size();
128+
for (int i = 0; i < n; ++i) {
129+
if (isdigit(s[i])) {
130+
int x = 0;
131+
int j = i;
132+
while (j < n && isdigit(s[j])) {
133+
x = x * 10 + (s[j] - '0');
134+
++j;
135+
}
136+
ans += sign * x;
137+
i = j - 1;
138+
} else if (s[i] == '+') {
139+
sign = 1;
140+
} else if (s[i] == '-') {
141+
sign = -1;
142+
} else if (s[i] == '(') {
143+
stk.push(ans);
144+
stk.push(sign);
145+
ans = 0;
146+
sign = 1;
147+
} else if (s[i] == ')') {
148+
ans *= stk.top();
149+
stk.pop();
150+
ans += stk.top();
151+
stk.pop();
152+
}
153+
}
154+
return ans;
155+
}
156+
};
157+
```
158+
159+
### **Go**
160+
161+
```go
162+
func calculate(s string) (ans int) {
163+
stk := []int{}
164+
sign := 1
165+
n := len(s)
166+
for i := 0; i < n; i++ {
167+
switch s[i] {
168+
case ' ':
169+
case '+':
170+
sign = 1
171+
case '-':
172+
sign = -1
173+
case '(':
174+
stk = append(stk, ans)
175+
stk = append(stk, sign)
176+
ans, sign = 0, 1
177+
case ')':
178+
ans *= stk[len(stk)-1]
179+
stk = stk[:len(stk)-1]
180+
ans += stk[len(stk)-1]
181+
stk = stk[:len(stk)-1]
182+
default:
183+
x := 0
184+
j := i
185+
for ; j < n && '0' <= s[j] && s[j] <= '9'; j++ {
186+
x = x*10 + int(s[j]-'0')
187+
}
188+
ans += sign * x
189+
i = j - 1
190+
}
191+
}
192+
return
193+
}
194+
```
195+
196+
### **TypeScript**
197+
198+
```ts
199+
function calculate(s: string): number {
200+
const stk: number[] = [];
201+
let sign = 1;
202+
let ans = 0;
203+
const n = s.length;
204+
for (let i = 0; i < n; ++i) {
205+
if (s[i] === ' ') {
206+
continue;
207+
}
208+
if (s[i] === '+') {
209+
sign = 1;
210+
} else if (s[i] === '-') {
211+
sign = -1;
212+
} else if (s[i] === '(') {
213+
stk.push(ans);
214+
stk.push(sign);
215+
ans = 0;
216+
sign = 1;
217+
} else if (s[i] === ')') {
218+
ans *= stk.pop() as number;
219+
ans += stk.pop() as number;
220+
} else {
221+
let x = 0;
222+
let j = i;
223+
for (; j < n && !isNaN(Number(s[j])) && s[j] !== ' '; ++j) {
224+
x = x * 10 + (s[j].charCodeAt(0) - '0'.charCodeAt(0));
225+
}
226+
ans += sign * x;
227+
i = j - 1;
228+
}
229+
}
230+
return ans;
231+
}
232+
```
233+
234+
### **C#**
59235

236+
```cs
237+
public class Solution {
238+
public int Calculate(string s) {
239+
var stk = new Stack<int>();
240+
int sign = 1;
241+
int n = s.Length;
242+
int ans = 0;
243+
for (int i = 0; i < n; ++i) {
244+
if (s[i] == ' ') {
245+
continue;
246+
}
247+
if (s[i] == '+') {
248+
sign = 1;
249+
} else if (s[i] == '-') {
250+
sign = -1;
251+
} else if (s[i] == '(') {
252+
stk.Push(ans);
253+
stk.Push(sign);
254+
ans = 0;
255+
sign = 1;
256+
} else if (s[i] == ')') {
257+
ans *= stk.Pop();
258+
ans += stk.Pop();
259+
} else {
260+
int num = 0;
261+
while (i < n && char.IsDigit(s[i])) {
262+
num = num * 10 + s[i] - '0';
263+
++i;
264+
}
265+
--i;
266+
ans += sign * num;
267+
}
268+
}
269+
return ans;
270+
}
271+
}
60272
```
61273

62274
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
public:
3+
int calculate(string s) {
4+
stack<int> stk;
5+
int ans = 0, sign = 1;
6+
int n = s.size();
7+
for (int i = 0; i < n; ++i) {
8+
if (isdigit(s[i])) {
9+
int x = 0;
10+
int j = i;
11+
while (j < n && isdigit(s[j])) {
12+
x = x * 10 + (s[j] - '0');
13+
++j;
14+
}
15+
ans += sign * x;
16+
i = j - 1;
17+
} else if (s[i] == '+') {
18+
sign = 1;
19+
} else if (s[i] == '-') {
20+
sign = -1;
21+
} else if (s[i] == '(') {
22+
stk.push(ans);
23+
stk.push(sign);
24+
ans = 0;
25+
sign = 1;
26+
} else if (s[i] == ')') {
27+
ans *= stk.top();
28+
stk.pop();
29+
ans += stk.top();
30+
stk.pop();
31+
}
32+
}
33+
return ans;
34+
}
35+
};
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,35 @@
1-
using System.Collections.Generic;
2-
31
public class Solution {
42
public int Calculate(string s) {
5-
var numbers = new Stack<int>();
6-
var symbols = new Stack<char>();
7-
int number = -1;
8-
for (var i = 0; i <= s.Length; ++i)
9-
{
10-
var ch = i < s.Length ? s[i] : ' ';
11-
if (char.IsDigit(ch))
12-
{
13-
if (number == -1) number = 0;
14-
number = number * 10 + ch - '0';
3+
var stk = new Stack<int>();
4+
int sign = 1;
5+
int n = s.Length;
6+
int ans = 0;
7+
for (int i = 0; i < n; ++i) {
8+
if (s[i] == ' ') {
9+
continue;
1510
}
16-
else
17-
{
18-
if (number != -1)
19-
{
20-
numbers.Push(number);
21-
while (symbols.Count > 0 && symbols.Peek() != '(')
22-
{
23-
var symbol = symbols.Pop();
24-
if (symbol == '+')
25-
{
26-
numbers.Push(numbers.Pop() + numbers.Pop());
27-
}
28-
else
29-
{
30-
numbers.Push(-(numbers.Pop() - numbers.Pop()));
31-
}
32-
}
33-
number = -1;
34-
}
35-
if (char.IsWhiteSpace(ch)) continue;
36-
37-
if (ch == ')')
38-
{
39-
symbols.Pop();
40-
while (symbols.Count > 0 && symbols.Peek() != '(')
41-
{
42-
var symbol = symbols.Pop();
43-
if (symbol == '+')
44-
{
45-
numbers.Push(numbers.Pop() + numbers.Pop());
46-
}
47-
else
48-
{
49-
numbers.Push(-(numbers.Pop() - numbers.Pop()));
50-
}
51-
}
52-
}
53-
else
54-
{
55-
symbols.Push(ch);
11+
if (s[i] == '+') {
12+
sign = 1;
13+
} else if (s[i] == '-') {
14+
sign = -1;
15+
} else if (s[i] == '(') {
16+
stk.Push(ans);
17+
stk.Push(sign);
18+
ans = 0;
19+
sign = 1;
20+
} else if (s[i] == ')') {
21+
ans *= stk.Pop();
22+
ans += stk.Pop();
23+
} else {
24+
int num = 0;
25+
while (i < n && char.IsDigit(s[i])) {
26+
num = num * 10 + s[i] - '0';
27+
++i;
5628
}
29+
--i;
30+
ans += sign * num;
5731
}
5832
}
59-
60-
return numbers.Pop();
33+
return ans;
6134
}
6235
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
func calculate(s string) (ans int) {
2+
stk := []int{}
3+
sign := 1
4+
n := len(s)
5+
for i := 0; i < n; i++ {
6+
switch s[i] {
7+
case ' ':
8+
case '+':
9+
sign = 1
10+
case '-':
11+
sign = -1
12+
case '(':
13+
stk = append(stk, ans)
14+
stk = append(stk, sign)
15+
ans, sign = 0, 1
16+
case ')':
17+
ans *= stk[len(stk)-1]
18+
stk = stk[:len(stk)-1]
19+
ans += stk[len(stk)-1]
20+
stk = stk[:len(stk)-1]
21+
default:
22+
x := 0
23+
j := i
24+
for ; j < n && '0' <= s[j] && s[j] <= '9'; j++ {
25+
x = x*10 + int(s[j]-'0')
26+
}
27+
ans += sign * x
28+
i = j - 1
29+
}
30+
}
31+
return
32+
}
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,33 @@
11
class Solution {
22
public int calculate(String s) {
3-
char[] cs = s.toCharArray();
4-
Deque<Character> op = new ArrayDeque<>();
5-
Deque<Integer> num = new ArrayDeque<>();
6-
for (int i = 0; i < cs.length; ++i) {
7-
if (cs[i] == '(' || cs[i] == '+' || cs[i] == '-') {
8-
op.push(cs[i]);
9-
} else if (cs[i] == ')') {
10-
op.pop();
11-
if (!op.isEmpty() && op.peek() != '(') {
12-
calc(op, num);
13-
}
14-
} else if (Character.isDigit(cs[i])) {
3+
Deque<Integer> stk = new ArrayDeque<>();
4+
int sign = 1;
5+
int ans = 0;
6+
int n = s.length();
7+
for (int i = 0; i < n; ++i) {
8+
char c = s.charAt(i);
9+
if (Character.isDigit(c)) {
1510
int j = i;
16-
int k = 0;
17-
while (j < cs.length && Character.isDigit(cs[j])) {
18-
k = k * 10 + cs[j] - '0';
19-
++j;
11+
int x = 0;
12+
while (j < n && Character.isDigit(s.charAt(j))) {
13+
x = x * 10 + s.charAt(j) - '0';
14+
j++;
2015
}
21-
num.push(k);
16+
ans += sign * x;
2217
i = j - 1;
23-
if (!op.isEmpty() && op.peek() != '(') {
24-
calc(op, num);
25-
}
18+
} else if (c == '+') {
19+
sign = 1;
20+
} else if (c == '-') {
21+
sign = -1;
22+
} else if (c == '(') {
23+
stk.push(ans);
24+
stk.push(sign);
25+
ans = 0;
26+
sign = 1;
27+
} else if (c == ')') {
28+
ans = stk.pop() * ans + stk.pop();
2629
}
2730
}
28-
return num.peek();
29-
}
30-
31-
private void calc(Deque<Character> op, Deque<Integer> num) {
32-
int y = num.pop();
33-
int x = num.pop();
34-
if (op.pop() == '+') {
35-
num.push(x + y);
36-
} else {
37-
num.push(x - y);
38-
}
31+
return ans;
3932
}
40-
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution:
2+
def calculate(self, s: str) -> int:
3+
stk = []
4+
ans, sign = 0, 1
5+
i, n = 0, len(s)
6+
while i < n:
7+
if s[i].isdigit():
8+
x = 0
9+
j = i
10+
while j < n and s[j].isdigit():
11+
x = x * 10 + int(s[j])
12+
j += 1
13+
ans += sign * x
14+
i = j - 1
15+
elif s[i] == "+":
16+
sign = 1
17+
elif s[i] == "-":
18+
sign = -1
19+
elif s[i] == "(":
20+
stk.append(ans)
21+
stk.append(sign)
22+
ans, sign = 0, 1
23+
elif s[i] == ")":
24+
ans = stk.pop() * ans + stk.pop()
25+
i += 1
26+
return ans
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function calculate(s: string): number {
2+
const stk: number[] = [];
3+
let sign = 1;
4+
let ans = 0;
5+
const n = s.length;
6+
for (let i = 0; i < n; ++i) {
7+
if (s[i] === ' ') {
8+
continue;
9+
}
10+
if (s[i] === '+') {
11+
sign = 1;
12+
} else if (s[i] === '-') {
13+
sign = -1;
14+
} else if (s[i] === '(') {
15+
stk.push(ans);
16+
stk.push(sign);
17+
ans = 0;
18+
sign = 1;
19+
} else if (s[i] === ')') {
20+
ans *= stk.pop() as number;
21+
ans += stk.pop() as number;
22+
} else {
23+
let x = 0;
24+
let j = i;
25+
for (; j < n && !isNaN(Number(s[j])) && s[j] !== ' '; ++j) {
26+
x = x * 10 + (s[j].charCodeAt(0) - '0'.charCodeAt(0));
27+
}
28+
ans += sign * x;
29+
i = j - 1;
30+
}
31+
}
32+
return ans;
33+
}

‎solution/1000-1099/1016.Binary String With Substrings Representing 1 To N/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242

4343
**方法一:脑筋急转弯**
4444

45-
我们注意到,字符串 $s$ 的长度不超过 $1000$,因此,字符串 $s$ 能表示不超过 $100$ 个 $10$ 位的二进制整数,因此,我们可以粗略地估算,如果 $n \gt 1023$,那么 $s$ 肯定不能表示 $[1, n]$ 范围内的所有整数的二进制表示。
45+
我们注意到,字符串 $s$ 的长度不超过 $1000$,所以字符串 $s$ 能表示不超过 $100$ 个 $10$ 位的二进制整数,因此,我们可以粗略地估算,如果 $n \gt 1023$,那么 $s$ 肯定不能表示 $[1, n]$ 范围内的所有整数的二进制表示。
4646

4747
另外,对于一个整数 $x$,如果 $x$ 的二进制表示是 $s$ 的子串,那么 $\lfloor x / 2 \rfloor$ 的二进制表示也是 $s$ 的子串。因此,我们只需要判断 $[\lfloor n / 2 \rfloor + 1,.. n]$ 范围内的整数的二进制表示是否是 $s$ 的子串即可。
4848

49-
时间复杂度 $O(m^2),空间复杂度 $O(m)$,其中 $m$ 是字符串 $s$ 的长度。
49+
时间复杂度 $O(m^2)$,空间复杂度 $O(m)$,其中 $m$ 是字符串 $s$ 的长度。
5050

5151
<!-- tabs:start -->
5252

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353

5454
<!-- 这里可写通用的实现逻辑 -->
5555

56-
**方法一:计数**
56+
**方法一:计数 + 模拟**
5757

5858
我们注意到,如果字符串 `croakOfFrogs` 是由若干有效的 `"croak"` 字符混合而成,那么它的长度一定是 $5$ 的倍数。因此,如果字符串的长度不是 $5$ 的倍数,可以直接返回 $-1$。
5959

0 commit comments

Comments
 (0)
Please sign in to comment.