计算器(力扣)

简介: 计算器(力扣)

每日题目

题目:计算器


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


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


示例:


示例 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;
    }
}

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


相关文章
|
存储 SQL Java
数据库TiDB-01.数据库架构概述
TiDB兼容MySQL 5.7协议,支持水平扩容或者缩容的金融级高可用的云原生分布式数据库。
796 2
数据库TiDB-01.数据库架构概述
|
Java API
Java之File类的详细解析及小练习
2. File类 2.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 2.2 构造方法
213 0
|
关系型数据库 MySQL 数据库
阿里云RDS恢复数据到本地上
在2018杭州云栖大会科研云峰会上,阿里云宣布与联科集团达成深度合作。此次合作将依托科研教育行业的多年积累,以及阿里云公共云算力资源的优势,共同推动科研和教育云超算的发展,为广大科研用户提供更便捷的高性能计算服务...
3937 0
|
11月前
|
人工智能 自然语言处理 API
用AI Agent做一个法律咨询助手,罗老看了都直呼内行 feat.通义千问大模型&阿里云百炼平台
本视频介绍如何使用通义千问大模型和阿里云百炼平台创建一个法律咨询助手AI Agent。通过简单配置,无需编写代码或训练模型,即可快速实现智能问答功能。演示包括创建应用、配置知识库、上传民法典文档、构建知识索引等步骤。最终,用户可以通过API调用集成此AI Agent到现有系统中,提供专业的法律咨询服务。整个过程简便高效,适合快速搭建专业领域的小助手。
1177 22
|
JavaScript
【vue2项目总结】——vant-ui的使用
【vue2项目总结】——vant-ui的使用
375 0
|
监控 PHP 数据库
【PHP开发专栏】PHP事务处理与并发控制
【4月更文挑战第29天】本文探讨了PHP中事务处理和并发控制的核心概念。事务处理确保数据完整性和一致性,具备ACID属性。PHP通过MySQLi和PDO扩展支持事务,示例展示了如何开启、提交和回滚事务。并发控制关注多用户环境下的数据一致性,涉及乐观锁和悲观锁策略。选择合适的事务隔离级别、避免长时间锁定、利用乐观锁以及监控调优是关键实践。理解这些原理有助于优化数据库应用的性能和稳定性。
229 0
|
存储 安全
【Azure Policy】使用deployIfNotExists 把 Azure Activity logs 导出保存在Storage Account
本文描述了如何使用 Azure Policy 对订阅下的所有 Activity Log 配置 Diagnostic Setting。具体要求包括:在 Subscription 或 Management Group 级别启用 Activity Log 功能、纠正已启用 Activity Log 的订阅参数配置、将日志存储在特定 Storage Account 中并保留 6 个月,以及收集特定类型的日志(如 Administrative、Security、Alert、Recommendation 和 ResourceHealth)。文章还介绍了常见错误及解决方法,并提供了相关参考链接。
170 9
|
存储
【数据结构】二叉树
【数据结构】二叉树
115 0
|
数据库
Basedao工具类:数据库操作利器,让你事半功倍!挥别繁琐,轻松驾驭数据世界!
Basedao工具类:数据库操作利器,让你事半功倍!挥别繁琐,轻松驾驭数据世界!
150 0
|
机器学习/深度学习 传感器 安全
【目标检测】基于背景差分实现运动车辆检测附Matlab代码
【目标检测】基于背景差分实现运动车辆检测附Matlab代码