TypechoJoeTheme

Toasobi的博客

基本运算器(中等)

本文最后更新于2023年03月27日,已超过542天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!


基本解法,运用栈进行数据存储,设定先前符号为+,之后遍历s入栈操作

<div>
class Solution {
    public int calculate(String s) {
        Deque<Integer> stack = new ArrayDeque<Integer>();
        char preSign = '+';
        int num = 0;
        for(int i=0;i<s.length();i++){
            if(Character.isDigit(s.charAt(i))){
                 num = num * 10 + s.charAt(i) - '0'; //是否是多位
            }
            if(!Character.isDigit(s.charAt(i)) && s.charAt(i) != ' ' || i == s.length()-1){
                switch(preSign){
                    case'+':
                        stack.push(num);
                        break;
                    case'-':
                        stack.push(-num);
                        break;
                    case'*':
                        stack.push(stack.pop() * num);
                        break;
                    case'/':
                        stack.push(stack.pop()/num);
                        break;
                }
                preSign = s.charAt(i);
                num = 0;
                
            }
        }
        while(!stack.isEmpty()){
            num += stack.pop();
        }
         return num;
    }
}
</div>
朗读
赞(0)
评论 (0)