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

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

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

要实现如下的功能:

字符串如何转为整数

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;
    }
}
相关推荐
kisshyshy7 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷14 小时前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络16 小时前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络16 小时前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao40016 小时前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao40016 小时前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack203 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树3 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色