public int calculate(String s) {
        Stack<Integer> operand = new Stack<>();
        int current = 0;
        char prevOperator = '+';
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (Character.isDigit(ch)) {
                current = current * 10 + ch - '0';
            }
            //if its not a digit or space then go in this block.
            //also if it is last character then go in this block and finish up last operation.
            if (i == s.length() - 1 || (ch != ' ' && !Character.isDigit(ch))) {
                if (prevOperator == '+') {
                    operand.push(current);
                } else if (prevOperator == '-') {
                    operand.push(-current);
                } else if (prevOperator == '/') {
                    operand.push(operand.pop() / current);
                } else {
                    operand.push(operand.pop() * current);
                }
                prevOperator = ch;
                current = 0;
            }
        }
        int result = 0;
        while (!operand.isEmpty()) {
            result += operand.pop();
        }
        return result;
    }
Date 10/11/2016
@author Tushar Roy

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.

Time complexity O(n)
Space complexity (n)

https://leetcode.com/problems/basic-calculator-ii/
src/com/interview/number/BasicCalculator.java