forked from varunu28/LeetCode-Java-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasic Calculator.java
More file actions
29 lines (29 loc) · 768 Bytes
/
Basic Calculator.java
File metadata and controls
29 lines (29 loc) · 768 Bytes
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
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<>();
int result = 0;
int number = 0;
int sign = 1;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
number = number * 10 + Character.getNumericValue(c);
} else if (c == '+' || c == '-') {
result += sign * number;
sign = c == '+' ? 1 : -1;
number = 0;
} else if (c == '(') {
stack.push(result);
stack.push(sign);
sign = 1;
result = 0;
} else if (c == ')') {
result += sign * number;
result *= stack.pop();
result += stack.pop();
number = 0;
}
}
return result + (sign * number);
}
}