LeetCode:Basic Calculator II

Basic Calculator II




Total Accepted: 23197  Total Submissions: 91345  Difficulty: Medium

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.

You may assume that the given expression is always valid.

Some examples:

"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5

Note: Do not use the eval built-in library function.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

Hide Tags
  String
Hide Similar Problems
  (H) Basic Calculator (H) Expression Add Operators





























java code:

public class Solution {
    public int calculate(String s) {
        int len = s.length();
        
        if(s==null || len==0) return 0;
        
        Stack<Integer> stack = new Stack<Integer>();
        
        char sign = '+';
        int num = 0;
        for(int i=0;i<len;i++) {
            char c = s.charAt(i);
            if(Character.isDigit(c))
                num = 10 * num + c-'0';
                
            if(!Character.isDigit(c) && c != ' ' || i==len-1) {
                switch(sign) {
                    case '+':
                        stack.push(num);
                        break;
                    case '-':
                        stack.push(-num);
                        break;
                    case '*':
                        stack.push(stack.pop()*num);
                        break;
                    case '/':
                        stack.push(stack.pop()/num);
                }
                sign = c;
                num = 0;
            }
        }
        
        int ans = 0;
        for(int x:stack)
            ans += x;
        return ans;
    }
}


你可能感兴趣的:(LeetCode,basic,II,calculator)