栈实现基本计算器

news2024/11/18 19:48:50

leetcode题目链接

这题其实和逆波兰表达式很像,无非多了个(和)

我们可以定义三个变量。

result表示当前计算结果

sign表示是+还是-

number表示当前数字

遍历字符串

利用isDigit 方法 提出数字

如果遇到加号result+=sign*number

减号则将sign=-1;

如果遇到(则先将当前的result和sign存入栈内

当遇到)在弹出

要主要的是末尾字符如果是数字且不为0一定记得加上。

代码如下:

import java.util.Stack;

// 给你一个字符串s,请你实现一个基本计算器来计算返回它的值
// 注意不允许使用任何字符串作为字符串作为数学表达式计算的内置函数,比如eval
public class calculate {
    public int calculate(String s){
       // rsult 当前计算结果
        // number当前正在处理的数字
        // sign当前符号 1表示正 -1表示负
        Stack<Integer>stack =new Stack<>();
        int result = 0;
        int sign = 1;
        int number = 0;
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if(Character.isDigit(c)){
                number=number*10+c-'0';
            }
            else if(c=='+'){
                result=result+sign*number;
                number=0;
                sign=1;
            }
            else if(c=='-'){
                result=result+sign*number;
                number=0;
                sign=-1;
            }
            else if(c=='('){
                stack.push(result);
                stack.push(sign);
                result=0;
                sign=1;
            }
            else if(c==')') {
                result = result + sign * number;
                number = 0;
                result *= stack.pop();//弹出并应用括号前的符号
                result += stack.pop();// 加上括号前的计算结果

            }
        }
        if(number!=0){
            result = result + sign * number;
        }
        return result;
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2132917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

codeup:将已有文件夹推送到已有仓库

codeup&#xff1a;将已有文件夹推送到已有仓库 总流程git initgit remote add origin https://codeup.aliyun.com/xxx/xxx.gitgit add .git commit &#xff08;会遇到很多问题&#xff09;git push -u origin master &#xff08;会遇到很多问题&#xff09;成功在仓库中添加…

Unity 摄像机(Camera)详解

文章目录 0.前言1.相机属性介绍2.Unity 中多个相机画面堆叠显示2.1 3D 摄像机2.2 UI 摄像机2.3 摄像机的Culling Mask设置 0.前言 本文介绍的是使用Unity默认的内置渲染管线下的Camera组件&#xff0c;使用URP或HDRP则不同。 1.相机属性介绍 Clear Flags&#xff1a; 清除标记…

Java 创建对象内存分析

通过创建一个Pet类&#xff0c;以及new了两个Pet类的对象dog和cat来说明&#xff1a; 内存概念图&#xff1a;

揭秘!洞察用户心声的神秘策略,如何悄然引领业务爆炸式增长!

引言 在互联网和数字化技术的推动下&#xff0c;用户行为和消费模式发生了深刻变化。用户不再仅仅满足于产品的基本功能&#xff0c;而是更加关注个性化体验、情感连接和价值认同。因此&#xff0c;企业要想在激烈的市场竞争中脱颖而出&#xff0c;必须深入理解用户需求&#…

【解决方案】双系统中修复ubuntu引导

双系统中修复ubuntu引导 一、grub命令行进入ubuntu二、grub命令行进入windows三、可以进入windows的情况四、可以进入ubuntu的情况五、使用EasyUEFI软件编辑引导 windows安装ubuntu系统之后&#xff0c;无法进入系统选择界面&#xff0c;会出现以下几种情况。 一、grub命令行进…

【重学 MySQL】二十八、SQL99语法新特性之自然连接和 using 连接

【重学 MySQL】二十八、SQL99语法新特性之自然连接和 using 连接 自然连接&#xff08;NATURAL JOIN&#xff09;USING连接总结 SQL99语法在SQL92的基础上引入了一些新特性&#xff0c;其中自然连接&#xff08;NATURAL JOIN&#xff09;和USING连接是较为显著的两个特性。 自…

027.爬虫专用浏览器-绕过常见无头检测(二)

一、无头检测简介&#xff1a; 无头检测(Headless Detection)就是检测用户是否在无头浏览器。只要检测到&#xff0c;那百分百是爬虫。无头检测我们多数使用这个站&#xff1a;https://bot.sannysoft.com/之前写过一篇文章&#xff1a;插眼传送&#xff0c;绕过了部分检测&…

C盘空间不足如何解决?解决C盘空间不足的7个方法

当计算机的C盘&#xff08;通常作为系统盘&#xff09;空间不足时&#xff0c;会严重影响系统的运行效率和稳定性。针对这一问题&#xff0c;以下7个解决方案&#xff0c;可以帮助我们有效释放C盘空间&#xff0c;提升系统性能。 1.磁盘清理 利用Windows内置的磁盘清理工具…

【IPV6从入门到起飞】5-3 IPV6+Home Assistant(ESP32+MQTT+GPIO)远程控制灯

IPV6Home Assistant[ESP32MQTTGPIO]远程控制灯 1 背景2 Home Assistant 配置3 ESP32 配置3-1 工程代码3-2 硬件接线 4 实现效果 1 背景 在上一小节我们通过ESP32接入了Home Assistant&#xff0c;实现了温度、湿度、光照强度的数据采集&#xff0c;但智能家居更多的是实现控制…

IDEA 修改 ${USER} 配置

背景 安装了阿里巴巴代码规范插件&#xff0c;需要使用自动添加作者信息的功能 但是添加的是个人昵称&#xff0c;并非公司要求的工号等信息&#xff0c;于是需要做出修改 修改方案 历经一番波折后&#xff0c;终于发现其原理&#xff0c;是因为 插件添加作者信息&#xff0…

Version ‘18.19.0‘ not found - try `nvm ls-remote` to browse available versions.

nvm安装指定版本不好使了 使用 nvm install 18.19.0 一直报错 Version 18.19.0 not found - try nvm ls-remote to browse available versions.然而使用 nvm ls-remote 只看到 iojs-v1.0.0iojs-v1.0.1iojs-v1.0.2iojs-v1.0.3iojs-v1.0.4iojs-v1.1.0iojs-v1.2.0iojs-v1.3.0iojs…

GPU池化为实现Robotaxi按下快进键

日前&#xff0c;甲子光年智库推出《2022中国Robotaxi行业研究报告&#xff1a;探寻规模化商业落地之路》。Robotaxi&#xff08;无人驾驶出租车&#xff09;是自动驾驶技术发展应用的终极目标之一&#xff0c;新基建下的智慧共享出行将链接贯穿未来数智化生活全场景。 该报告从…

html限制仅有一个音/视频可播放

html限制仅有一个音/视频可播放 /** 多个音频仅能播放一个 */ function audiosPlay() {const audios document.getElementsByTagName(audio);const videos document.getElementsByTagName(video);function pauseAll() {var self this;[].forEach.call(audios, function (i) …

MySQL之对数据库和表的操作

目录 一、创建数据库 二、字符集和校验规则 1、查看系统默认字符集 2、查看系统默认的校验规则 3、查看数据库支持的字符集 4、查看数据库支持的字符集校验规则 5、校验规则对数据库的影响 三、操作数据库 1、查看数据库 2、查看创建语句 ​编辑 3、修改数据库 4、…

从键入网址到显示页面全流程(超详细版)

网络 &#x1f468;‍&#x1f3eb; 小林coding 键入网址到网页显示&#xff0c;期间发生了什么 HTTP【端口&#xff1a;80】 解析URL 协议Web服务器地址目录 文件名 生成请求报文 请求行 请求方法&#xff08;get、post …&#xff09;请求路径协议的版本&#xff08;HTTP/1…

品读 Java 经典巨著《Effective Java》90条编程法则,第4条:通过私有构造器强化不可实例化的能力

文章目录 【前言】欢迎订阅【品读《Effective Java》】系列专栏java.lang.Math 类的设计经验总结 【前言】欢迎订阅【品读《Effective Java》】系列专栏 《Effective Java》是 Java 开发领域的经典著作&#xff0c;作者 Joshua Bloch 以丰富的经验和深入的知识&#xff0c;全面…

主数据管理系统:KPaaS 集成平台助力企业数据治理

在数字化转型的浪潮中&#xff0c;企业面临着日益复杂的信息技术环境。多系统并存、数据分散的现象普遍存在&#xff0c;这对企业的数据管理和业务协同提出了严峻挑战。主数据管理&#xff08;Master Data Management, MDM&#xff09;作为确保企业核心业务数据准确、一致、完整…

Vite - public目录的图片也会被处理?(public目录的特点)

目录 1&#xff0c;问题描述2&#xff0c;解决3&#xff0c;问题分析3.1&#xff0c;public 目录特点3.2&#xff0c;原因 1&#xff0c;问题描述 复现步骤&#xff1a; 项目为 vite5.0.8 创建的 Vue3 TS 项目。 将图片&#xff08;10kb&#xff09;放到了 public 目录下&a…

设计表时的三大范式(MySQL)

设计表时的三大范式 什么是范式第一范式第二范式不满足第二范式的缺点数据冗余插入异常更新异常删除异常 第三范式 什么是范式 在表的设计中&#xff0c;范式是一种设计规范&#xff0c;用于更好的组织和管理数据。 设计数据表时的范式有第一范式1NF、第二范式2NF、第三范式3…