Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +, -, *, / 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:
You may assume that the given expression is always valid.
Do not use the eval built-in library function.
classSolution {publicintcalculate(String s) {if (s ==null||s.length() ==0) return0;int len =s.length();Stack<Integer> stack =newStack<Integer>();int num =0;char sign ='+';for (int i =0; i < len; i++) {if (Character.isDigit(s.charAt(i))) { num = num *10+s.charAt(i) -'0'; } if (!Character.isDigit(s.charAt(i)) &&s.charAt(i) !=' '|| i == len -1) { // The last character run twiceif (sign =='+') {stack.push(num); } elseif (sign =='-') {stack.push(-num); } elseif (sign =='*') {int val =stack.pop();stack.push(val * num); } elseif (sign =='/') {int val =stack.pop();stack.push(val / num); } sign =s.charAt(i); num =0; } }int ans =0;for (int val : stack) { ans += val; }return ans; }}