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

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

示例 1:输入: "3+2*2"
输出: 7
示例 2:输入: " 3/2 "
输出: 1
示例 3:输入: " 3+5 / 2 "
输出: 5

代码如下

class Solution {public int calculate(String s) {if(s==null||s.length()==0)return 0;s = s.replace(" ","");Stack<Integer> num = new Stack<>();int n = 0;char op = '+';for(int i=0;i<s.length();i++){char c = s.charAt(i);if(Character.isDigit(c)){n = n*10+(c-'0');}if(!Character.isDigit(c)||i==s.length()-1){int pre;switch(op){case '+': num.push(n);break;case '-': num.push(-n);break;case '*': pre=num.pop();num.push(pre*n);break;case '/': pre=num.pop();num.push(pre/n);break;}op=c;n=0;}}int res=0;while(!num.isEmpty()){res+=num.pop();}return res;}
}
普通计算器,且都为整数,我们主要操作是,遇到+-就将数入栈,
遇到乘除就将数字出栈计算后再入栈。1.判断的op是当前num的前一个计算符,我们是假设num后面出现了操作符,
然后再去判断num前面的操作符是什么:1.1如果num前面的是+或者-,我们就将num入栈,其中如果是-号,
我们就将-num入栈,要记住,switch比的操作符是num前面的而不是
当前的char c=s.charAt(i)。1.2如果是*/,我们就将栈中存放的num前面一个数字出栈,
用该数字和num进行运算,将运算后的数字继续入栈。
每次操作完后我们将num=0,op=s.charAt(i)。
最后,把栈里的数相加就是结果

Leetcode 1626 计算器相关推荐

  1. LeetCode 1626. 无矛盾的最佳球队(最大上升子序DP)

    文章目录 1. 题目 2. 解题 1. 题目 假设你是球队的经理.对于即将到来的锦标赛,你想组合一支总体得分最高的球队.球队的得分是球队中所有球员的分数 总和 . 然而,球队中的矛盾会限制球员的发挥, ...

  2. LeetCode 991. 坏了的计算器(逆向思考)

    1. 题目 在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2: 递减(Decrement):将显示屏上的数字减 1 . 最初,计算器显示数字 X. 返 ...

  3. 【一天一道Leetcode】基本计算器的延伸问题

    本篇推文共计2000个字,阅读时间约3分钟. 01 题目描述 题目描述: 给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 示例: 输入:s = " ...

  4. LeetCode 1615. 最大网络秩 / 2389. 和有限的最长子序列 / 1626. 无矛盾的最佳球队(排序+动态规划)

    1615. 最大网络秩 2023.3.15 每日一题 题目描述 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络.每个 roads[i] = [ai, bi] 都表示在城市 a ...

  5. LeetCode Basic Calculator II(加减乘除计算器)

    与 LeetCode Basic Calculator(用栈计算表达式的值)相似 代码如下: public class Solution {private int cal(int num1, int ...

  6. leetcode 224. Basic Calculator | 224. 基本计算器(中缀表达式求值)

    题目 https://leetcode.com/problems/basic-calculator/ 题解 中缀表达式求值,之前学数据结构的笔记: class Solution {public int ...

  7. leetcode 227. Basic Calculator II | 227. 基本计算器 II(中缀表达式求值)

    题目 https://leetcode.com/problems/basic-calculator-ii/ 题解 这道题是 中缀表达式求值 的简化版(因为没有左右括号运算),不过输入的形式有两个处理起 ...

  8. leetcode 227. 基本计算器 II(栈)

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 示例 1: 输入:s = "3+2*2" 输出:7 解题思路 利用两个栈,一个记录 ...

  9. leetcode 224. 基本计算器(栈)

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 示例 1: 输入:s = "1 + 1" 输出:2 示例 2: 输入:s = " 2-1 + 2 ...

最新文章

  1. python的类和对象_Python类与对象实验
  2. 读DL论文心得之SPP
  3. 网络:TCP/UDP
  4. 自定义ImageView 实现双击放大缩小还原,无极缩小和旋转及拖动(多机型测试很稳定)
  5. 解决2次查询User的问题(ThreadLocal)
  6. HTML+CSS的学习
  7. stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。
  8. ajax get 不会缓存,ajax的get请求时缓存处理解决方法
  9. 转ORA-28002: the password will expire within 7 days 解决方法
  10. 机器学习基础(三十三)—— 皮尔逊相关度评价
  11. 基本运算符中Swift和Java的比较
  12. Confluence 6 附件存储配置
  13. 程序员所需要的数学知识都这里了
  14. 基于python的毕业设计仓库库存管理系统
  15. Egoist (罪恶王冠) | mmd动作+镜头下载
  16. webgl点光源的漫反射
  17. 软件测试面试,面试官最后问:你有什么要问我的吗?应该如何回答
  18. 图像特征计算——纹理特征
  19. 漫步数理统计三十四——顺序统计量
  20. 【萧蕊冰】ui设计和交互设计的区别是什么?

热门文章

  1. 数学建模学习(85):人工蜂群优化算法(ABCO)求解多元函数
  2. Spring Cloud 加密encrypt和解密decrypt
  3. ARFoundation之路-视频播放
  4. IC 芯片 丝印反查 芯片型号 Mark code
  5. CSS .class .class与.class.class区别
  6. 量子计算成区块链的达摩克利斯之剑,Hcash却选择装剑入鞘
  7. 闵可夫斯基时空中下,洛伦兹变换的时空间隔不变性举例
  8. CSS开启硬件加速 hardware accelerated
  9. 指针数组与数组指针详解
  10. 高考完当天,你做的第一件事是什么?