forked from jyxia/LeetCode-JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path227-calculatorII.js
34 lines (31 loc) · 910 Bytes
/
227-calculatorII.js
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
/**
* !!can always use Math.trunc() to get the integer part of a number
* @param {string} s
* @return {number}
*/
var calculate = function(s) {
var stack = [],
i, num = 0, sign = '+';
for (i = 0; i < s.length; i++) {
if (!isNaN(s[i]) && s[i] !== ' ') {
num = num * 10 + parseInt(s[i], 10);
}
if ((isNaN(s[i])) || i === s.length - 1) {
if (sign === '+') {
stack.push(num);
} else if (sign === '-') {
stack.push(-num);
} else if (sign === '*') {
stack.push(parseInt(stack.pop(), 10) * num);
} else if (sign === '/') {
stack.push(Math.trunc(parseInt(stack.pop(), 10) / num));
}
sign = s[i];
num = 0;
}
}
for (i = 0; i < stack.length; i++) {
num += stack[i];
}
return num;
};