优选算法-栈: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=='/');
    }
}
相关推荐
jllllyuz2 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
q***06292 小时前
Tomcat的升级
java·tomcat
夏鹏今天学习了吗2 小时前
【LeetCode热题100(72/100)】前 K 个高频元素
leetcode
稚辉君.MCA_P8_Java2 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
多多*2 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
青云交2 小时前
Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
java·spark·路径规划·大数据分析·智能物流·无人配送车·协同调度
d***81722 小时前
解决SpringBoot项目启动错误:找不到或无法加载主类
java·spring boot·后端
p***43482 小时前
Rust网络编程模型
开发语言·网络·rust
덕화2 小时前
【面试宝典】线上问题逆向分析1
面试·职场和发展