[LC] 227. Basic Calculator II
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
class Solution { public int calculate(String s) { char[] charArr = s.toCharArray(); LinkedListstack = new LinkedList<>(); char sign = '+'; int num = 0; for (int i = 0; i < charArr.length; i++) { char cur = charArr[i]; if (Character.isDigit(cur)) { num = cur - '0'; while (i + 1 < charArr.length && Character.isDigit(charArr[i + 1])) { num = 10 * num + charArr[i + 1] - '0'; i += 1; } } // add sign and assign sign to number if (cur != ' ' && !Character.isDigit(cur) || i == charArr.length - 1) { if (sign == '+') { stack.offerFirst(num); } if (sign == '-') { stack.offerFirst(-num); } if (sign == '*') { stack.offerFirst(stack.pollFirst() * num); } if (sign == '/') { stack.offerFirst(stack.pollFirst() / num); } sign = cur; num = 0; } } int res = 0; for (int i: stack) { res += i; } return res; } }