Implement a basic calculator to evaluate a simple expression string.
The expression string contains onlynon-negativeintegers,+
,-
,*
,/
operators and empty spaces. The integer division should truncate toward zero.
Example 1:
Input:
"3+2*2"
Output:
7
Example 2:
Input:
" 3/2 "
Output:
1
Example 3:
Input:
" 3+5 / 2 "
Output:
5
Note:
eval
built-in library function.class Solution {
public int calculate(String s) {
if (s == null || s.length() == 0) return 0;
s = s.trim();
s = s.replaceAll("\\s", "");
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if (Character.isDigit(c)){
num = num * 10 + (c - '0');
}
if (!Character.isDigit(c) || i == s.length() - 1){
if (sign == '+'){
stack.push(num);
}
else if (sign == '-'){
stack.push(-num);
}
else if (sign == '*'){
stack.push(stack.pop() * num);
}
else if (sign == '/'){
stack.push(stack.pop() / num);
}
sign = c;
num = 0;
}
}
int ans = 0;
while (!stack.isEmpty()){
ans += stack.pop();
}
return ans;
}
}