首页 > 其他 > 详细

224. 基本计算器

时间:2020-08-14 23:16:37      阅读:78      评论:0      收藏:0      [点我收藏+]

技术分享图片

class Solution {
    int index = 0;
    public int calculate(String s) {
        int n = s.length();
        Stack<Integer> stack = new Stack();
        char pre = ‘+‘;
        int num = 0;
        for(; index < n; index ++) {
            char c = s.charAt(index);
            if(Character.isDigit(c)) {
                num = num * 10 + (c - ‘0‘);
            }
            if(c == ‘(‘) {
                index++;
                num = calculate(s);
            }    
            if(!Character.isDigit(c) && c != ‘ ‘ || index == n - 1) {
                switch(pre) {
                    case ‘+‘:
                        stack.push(num);
                        break;
                    case ‘-‘:
                        stack.push(-num);
                        break;
                    case ‘*‘:
                        stack.push(stack.pop() * num);
                        break;
                    case ‘/‘:
                        stack.push(stack.pop() / num);
                        break;
                }
                pre = c;
                num = 0;
            }
            if(c == ‘)‘) break;
            
        }
        int res = 0;
        while(!stack.empty()) {
            res += stack.pop();
        }
        return res;
    }
}

 

224. 基本计算器

原文:https://www.cnblogs.com/yonezu/p/13504268.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!