Skip to content

Commit 5e3c039

Browse files
authored
Update 227-basic-calculator-ii.js
1 parent a7fa5c0 commit 5e3c039

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

227-basic-calculator-ii.js

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,20 @@
33
* @return {number}
44
*/
55
const calculate = function(s) {
6-
if (!s || !s.length) return 0
7-
let n = 0
8-
let op = '+'
9-
const stack = []
10-
for (let i = 0; i < s.length; i++) {
11-
let c = s.charAt(i)
12-
let isNumber = '0' <= c && c <= '9'
13-
if (isNumber) {
14-
n = n * 10 + +c
15-
}
16-
if ((!isNumber && c !== ' ') || i == s.length - 1) {
17-
if (op === '+') stack.push(n)
18-
else if (op === '-') stack.push(-n)
19-
else if (op === '*') stack.push(stack.pop() * n)
20-
else if (op === '/') stack.push(~~(stack.pop() / n))
21-
op = c
22-
n = 0
6+
const stack = [], n = s.length
7+
let op = '+', num = 0
8+
for(let i = 0; i < n; i++) {
9+
const isNumber = s[i] >= '0' && s[i] <= '9'
10+
if(isNumber) num = num * 10 + (+s[i])
11+
if((!isNumber && s[i] !== ' ') || i === n - 1) {
12+
if(op === '+') stack.push(num)
13+
else if(op === '-') stack.push(-num)
14+
else if(op === '*') stack.push(stack.pop() * num)
15+
else if(op === '/') stack.push(~~(stack.pop() / num))
16+
op = s[i]
17+
num = 0
2318
}
2419
}
25-
return stack.reduce((a, b) => a + b, 0)
26-
}
20+
21+
return stack.reduce((ac, e) => ac + e, 0)
22+
};

0 commit comments

Comments
 (0)