优选算法-栈:67.基本计算器Ⅱ

题目链接:227. 基本计算器 II(中等)

算法原理:

解法:利用栈模拟计算过程

击败95.31%

时间复杂度O(N)

Java代码:

java 复制代码
import java.util.ArrayDeque;
import java.util.Deque;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-09-16
 * Time: 19:25
 */
class Solution {
    //227. 基本计算器 II
    public int calculate(String s) {
        Deque<Integer> stack=new ArrayDeque<>();
        //要写成ArrayDeque(它是实现了Deque接口的类),而Deque是接口,不能实例化
        char op='+';int i=0,n=s.length();
        char[] ss=s.toCharArray();
        while(i<n){
            if(ss[i]==' ')i++;
            else if(!isOperator(ss[i])){
                int tmp=0;
                while(i<n&&ss[i]>='0'&&ss[i]<='9'){
                    tmp=tmp*10+(int)(ss[i]-'0');
                    i++;
                }
                if(op=='+') stack.push(tmp);
                else if(op=='-') stack.push(-tmp);
                else if(op=='*') stack.push(stack.pop()*tmp);
                else stack.push(stack.pop()/tmp);
            }else{
                op=ss[i];
                i++;
            }
        }
        int ret=0;
        while(!stack.isEmpty()) ret+=stack.pop();
        return ret;
    }
    public boolean isOperator(char ch){
        return (ch=='+'||ch=='-'||ch=='*'||ch=='/');
    }
}
相关推荐
NAGNIP10 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
程序员清风16 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55117 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
颜酱18 小时前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端