计算器(力扣)

简介: 计算器(力扣)

每日题目

题目:计算器


给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。


表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。


示例:


示例 1:


输入: “3+2*2”

输出: 7


示例 2:


输入: " 3/2 "

输出: 1


示例 3:


输入: " 3+5 / 2 "

输出: 5


说明:


你可以假设所给定的表达式都是有效的。

请不要使用内置的库函数 eval。


小坑,字符串里有空格,需要替换掉


代码:

class Solution {
    public int calculate(String s) {
        s =s.replaceAll(" ","");
        Deque<Integer> stack = new ArrayDeque<>();
        //先把第一个加进去
        char flag = '+';
        //数字的初始值
        int num = 0;
        for(int i=0;i<s.length();i++){
            //转换成数字
            if(Character.isDigit(s.charAt(i))){
                num = num*10+s.charAt(i)-'0';
            }
            //根据符号进行运行,就是*和/,优先级高,先把栈中的数字拿出来,运算后放进去
            if(!Character.isDigit(s.charAt(i)) || i==s.length()-1){
                if(flag=='+'){
                    stack.push(num);
                }else if(flag=='-'){
                    stack.push(-num);
                }else if(flag=='*'){
                    stack.push(stack.pop()*num);
                }else if(flag=='/'){
                    stack.push(stack.pop()/num);
                }
                flag = s.charAt(i);
                num =0;
            }
        }
        //遍历栈,累加结果
        int res =0;
        while(!stack.isEmpty()){
            res += stack.pop();
        }
        return res;
    }
}

以上就是计算器的全部内容


相关文章
|
5月前
|
Java
力扣经典150题第五十三题:基本计算器
力扣经典150题第五十三题:基本计算器
49 1
|
7月前
|
测试技术
简单计算器 ——HDU(1237)
简单计算器 ——HDU(1237)
|
7月前
leetcode-224:基本计算器
leetcode-224:基本计算器
38 0
|
7月前
|
存储 算法
算法题解-基本计算器2
算法题解-基本计算器2
“两数之和“-力扣01
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 示例 1:
35 0
|
开发工具 Python
【每周一坑】鸡兔同笼 +【解答】房贷计算器
附加题:输入头数 m 和脚数 n,输出鸡的数量 c 和兔子的数量 r,或提示无解。
|
存储 C++ 容器
两数之和(力扣刷题)
两数之和(力扣刷题)
|
算法
算法 | 计算器系列 | 刷题打卡
算法 | 计算器系列 | 刷题打卡
133 0
算法 | 计算器系列 | 刷题打卡