Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >227. 基本计算器 II

227. 基本计算器 II

作者头像
编程张无忌
发布于 2021-06-01 13:02:22
发布于 2021-06-01 13:02:22
32800
代码可运行
举报
文章被收录于专栏:悟道悟道
运行总次数:0
代码可运行

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int calculate(String s) {
        /**
        有一个记录上一次出现的符号变量的 pre
        加法直接入栈
        减法入栈他的相反数
        乘除 直接跟栈顶元素运算 在push
         有一点注意的是  这个数可以是多位的比如 32  
                所以应该判断当前字符是不是数字 是就 num=num*10+cur 知道遇到符号,在num 清零
         */
         Stack<Integer> stack=new Stack();
         char pre='+';
         char [] chars=s.toCharArray();
        
         int num=0;//记录当前数字
         for(int i=0;i<s.length();i++){
            

           if(Character.isDigit(chars[i])){
             
                 //如果是数字就*10+1
                 num=num*10+chars[i]-'0';
               
             }
             //不是数字而且不是空  或者是最后一位
            if(i==s.length()-1||!Character.isDigit(chars[i])&&chars[i]!=' '){
          
             if(pre=='+'){
                 stack.push(num);
             }else if(pre=='-'){
                   stack.push(-num);
             }else if(pre=='*'){
                   stack.push(stack.pop()*num);
             }else if(pre=='/'){
                  stack.push(stack.pop()/num);
             }
       
             //num清0 
             num=0;
             //更新前一个符号
             pre=chars[i];

             }            
         }

         
         int res=0;
         while(!stack.isEmpty()){
             //如果不是空就相加
             res+=stack.pop();
         }
         return res;

    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【练习】计算给定算数表达式的结果
给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。
孟君
2020/04/23
1.2K0
227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
张伦聪zhangluncong
2022/10/26
3140
力扣227——227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。整数除法仅保留整数部分。
健程之道
2020/03/12
3410
Leetcode 题目解析之 Basic Calculator II
Implement a basic calculator to evaluate a simple expression string.
ruochen
2022/01/15
1.3K0
算法细节系列(25):加减乘除
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/72782815
用户1147447
2019/05/26
5190
解释器模式浅析
在平时编码中,其实我们或多或少的已经接触到这个解释器设计模式了。比如:使用正则表达式提取相关内容,或者判断是否符合某种格式;
孟君
2020/06/19
3840
224. 基本计算器
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
张伦聪zhangluncong
2022/10/26
3840
Leetcode 题目解析之 Basic Calculator
Implement a basic calculator to evaluate a simple expression string.
ruochen
2022/01/15
1.2K0
算法练习笔记——栈的常用方法以及算法练习
小尘要自信
2023/10/10
1550
算法练习笔记——栈的常用方法以及算法练习
LeetCode题解—有效的括号(栈)
栈是什么,很金典的比喻就是把 栈 比喻成叠盘子,一个个叠上去,然后拿的时候会先拿最上面的,也就是最后叠上去的那个。
码上积木
2021/03/10
3180
Decode String
Given an encoded string, return it’s decoded string.
Tyan
2019/05/25
8460
LeetCode 227. 基本计算器 II(栈)
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
Michael阿明
2020/07/13
6250
LeetCode 227. 基本计算器 II(栈)
小鹏三面,一道 Hard 结束
一般来说,面试过程有个潜规则,如果面试官对你很满意,在算法面试环节往往会给你出一道简单题或者送分题,如果觉得不满意,则会让你手撕一道 Hard 题,让你觉得是因为这个环节表现不佳被拒。
五分钟学算法
2024/05/10
4470
小鹏三面,一道 Hard 结束
【栈与队列】基本计算器 II
​ 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。
利刃大大
2025/02/21
390
【栈与队列】基本计算器 II
一、基础数据结构
1、当移动<font style="color:rgb(233, 105, 0);background-color:rgb(248, 248, 248);">right</font>扩大窗口,即加入字符时,应该更新哪些数据?
阿东知识库1
2024/09/03
1750
一、基础数据结构
【Java数据结构和算法】008-栈
请输入一个表达式 计算式:[7*2*2-5+1-5+3-3] 点击计算【如下图】:
訾博ZiBo
2025/01/06
800
【Java数据结构和算法】008-栈
# 栈 栈的一个实际需求 栈的介绍 栈的应用场景 代码实现 栈实现综合计算器 # 栈的一个实际需求 请输入一个表达式 计算式:[722-5+1-5+3-3]点击计算【如下图】 请问:计算机底层是如何
用户9615083
2022/12/30
4320
栈
表达式求值问题(java)
给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。
用户10604450
2024/03/15
1320
数据结构之栈
后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将中缀表达式转成后缀表达式。
用户11332765
2024/10/28
790
数据结构之栈
【表达式计算】双栈 : 表达式计算问题的通用解法
的基础上,如果考虑支持自定义符号,例如 a / func(a, b) * (c + d),需要做出什么调整?
宫水三叶的刷题日记
2022/11/01
9070
相关推荐
【练习】计算给定算数表达式的结果
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验