优选算法-栈: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=='/');
    }
}
相关推荐
qq_21138747几秒前
基于LangGraph多agent
开发语言·前端·javascript·agent·langgraph
※※冰馨※※1 分钟前
【QT】TortoiseGit配 SSH 克隆 Codeup
开发语言·c++·windows
一只爱学习的小鱼儿2 分钟前
使用QT编写粒子显示热力图效果
开发语言·qt
2301_816651222 分钟前
C++中的策略模式高级应用
开发语言·c++·算法
jgyzl3 分钟前
2026.3.20 用EasyExcel实现excel报表的导入与导出
java·python·excel
FirstFrost --sy4 分钟前
C语言常见概念入门指南
职场和发展·蓝桥杯
LDR0064 分钟前
如何使用OpenClaw提高工作效率?
数据结构·算法
liuyao_xianhui4 分钟前
优选算法_模拟_替换所有的‘?‘_C++
开发语言·javascript·数据结构·c++·算法·链表·动态规划
Javatutouhouduan4 分钟前
SpringBoot如何快速精通?
java·spring boot·mybatis·java面试·后端开发·java编程·java程序员