Basic Calculator

lc 224

Implement a basic calculator to evaluate a simple expression string.

The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces .

Example 1:

Input: "1 + 1" Output: 2 Example 2:

Input: " 2-1 + 2 " Output: 3 Example 3:

Input: "(1+(4+5+2)-3)+(6+8)" Output: 23

class Solution {
    public int calculate(String s) {
        Stack<Integer> stack = new Stack<>();
        int sign = 1;
        int result = 0;
        int num = 0;
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                num = num * 10 + (int)(s.charAt(i) - '0');
            } else if (!Character.isDigit(s.charAt(i))){
                if (s.charAt(i) == '+') {
                    result += num * sign;
                    num = 0;
                    sign = 1;
                }
                if (s.charAt(i) == '-') {
                    result += num * sign;
                    num = 0;
                    sign = -1;
                }
                if (s.charAt(i) == '(') {
                    stack.push(result);
                    stack.push(sign);
                    result = 0;
                    sign = 1;
                    //num = 0;
                }
                if (s.charAt(i) == ')') {
                    result += num * sign;
                    result = result * stack.pop() + stack.pop();
                    num = 0;
                }
            } 
        }
        if (num != 0) {
            result += num * sign;
        }
        return result;
    }
}

results matching ""

    No results matching ""