Basic Calculator
lc 224
Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces .
Example 1:
Input: "1 + 1" Output: 2 Example 2:
Input: " 2-1 + 2 " Output: 3 Example 3:
Input: "(1+(4+5+2)-3)+(6+8)" Output: 23
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<>();
int sign = 1;
int result = 0;
int num = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
num = num * 10 + (int)(s.charAt(i) - '0');
} else if (!Character.isDigit(s.charAt(i))){
if (s.charAt(i) == '+') {
result += num * sign;
num = 0;
sign = 1;
}
if (s.charAt(i) == '-') {
result += num * sign;
num = 0;
sign = -1;
}
if (s.charAt(i) == '(') {
stack.push(result);
stack.push(sign);
result = 0;
sign = 1;
//num = 0;
}
if (s.charAt(i) == ')') {
result += num * sign;
result = result * stack.pop() + stack.pop();
num = 0;
}
}
}
if (num != 0) {
result += num * sign;
}
return result;
}
}