数据结构+算法-实现一个计算器

在学习栈的数据结构的时候讲到可以用栈来实现一个计算器的功能,那么这个功能是如何实现的呢?

采用栈+模拟得方式来实现一个计算器

要实现如下的功能:

字符串如何转为整数

2.处理加减法

如何处理加减法呢?

5-12+8 给第一个数字前面放一个+号。

如何处理乘法呢?

乘法的优先级在于和栈顶的数进行结合,而加减法只是将元素放入栈中去。

如何进行括号运算


最后的Java代码:

java 复制代码
class Solution {
    public int calculate(String s){
        return   f(new LinkedList<>(parseStringToList(s)));
    }
    private Deque<Character> parseStringToList(String s) {
        Deque<Character> list = new LinkedList<>();
        for (char c : s.toCharArray()) {
            list.add(c);
        }
        return list;
    }
    private  int  f(Deque<Character> s ){
        Deque<Integer> stack=new LinkedList<>();
        char sign='+';
        int num=0;
        while (!s.isEmpty()){
            char c=s.pollFirst(); //将第一个弹出来
            if (Character.isDigit(c)){
                num=10*num+(c-'0');
            }
            if (c=='('){
                num=f(s);
            }
            if (!Character.isDigit(c)&&c!=' '||s.isEmpty()){
                if (sign=='+'){
                    stack.push(num);
                }else if (sign=='-'){
                    stack.push(-num); //负数添加进去
                }else if(sign=='*'){
                    stack.push(stack.poll()*num);
                }else if(sign=='/'){
                    stack.push(stack.poll()/num);
                }
                num=0;
                sign=c;
            }
            if (c==')') break;
        }
        int sum=0;
        for(int n:stack){
            sum+=n;
        }
        return  sum;
    }
}
相关推荐
灵枢时代1 小时前
小程序在生鲜配送行业,如何设计夜间预约和次日达的订单处理流程?
数据结构·人工智能·小程序
June`1 小时前
常量内存和只读缓存
c++·人工智能·算法·cuda
一条大祥脚1 小时前
ABC468 扫描线|贡献法|二阶差分|线段树优化DP
数据结构·算法
happyprince1 小时前
篇2-bitsandbytes-具体观-算法与实现剖析
算法
普通攻击往后拉11 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
@syh.12 小时前
【贪心】矩阵消除游戏
算法·游戏·矩阵
可编程芯片开发12 小时前
基于零极点配置的PID控制系统simulink建模与仿真
算法
徐小夕13 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
Hrain-AI13 小时前
2026 企业 AI 智能体平台横评:8 大主流平台 7 维度实测对比
人工智能·算法·机器学习