class Solution {
public int calculate(String s) {
if (s == null) {
return 0;
}
s = s.replaceAll(" ", "");
int len = s.length();
if (len == 0) {
return 0;
}
List<Integer> stack = new ArrayList<>();
int num = 0;
char sign = '+';
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
num = num * 10 + c - '0';
}
if (!Character.isDigit(c) || i == len - 1) {
if (sign == '+') {
stack.add(num);
} else if (sign == '-') {
stack.add(-num);
} else if (sign == '*') {
stack.add(stack.remove(stack.size() - 1) * num);
} else if (sign == '/') {
stack.add(stack.remove(stack.size() - 1) / num);
}
sign = c;
num = 0;
}
}
int result = 0;
for (int n : stack) {
result += n;
}
return result;
}
}