Java Solution


  • 0
    P
    public class Solution {  
        public int calculate(String s) {  
            Stack<Integer> stack = new Stack<>();  
            stack.push(1);  
            stack.push(1);  
            int res = 0;  
            for (int i = 0; i < s.length(); i++) {  
                char c = s.charAt(i);  
                if (Character.isDigit(c)) {  
                    int num = c - '0';  
                    int j = i + 1;  
                    while (j < s.length() && Character.isDigit(s.charAt(j))) {  
                        num = 10 * num + (s.charAt(j) - '0');  
                        j++;  
                    }  
                    res += stack.pop() * num;  
                    i = j - 1;  
                } else if (c == '+' || c == '(') {  
                    stack.push(stack.peek());  
                } else if (c == '-') {  
                    stack.push(-1 * stack.peek());  
                } else if (c == ')') {  
                    stack.pop();  
                }  
            }  
            return res;  
        }  
    }  
    
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.