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

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

示例 1:

输入: “3+2*2”
输出: 7

代码

class Solution {public int calculate(String s) {int i=0,n=s.length();LinkedList<Character> stack=new LinkedList<>();//符号栈LinkedList<Integer> stack1=new LinkedList<>();//数值栈while (i<n){if(s.charAt(i)==' '){//跳过空格i++;continue;}if(Character.isDigit(s.charAt(i)))//提取数值进栈{int num=0;while (i<n&&Character.isDigit(s.charAt(i))){num=num*10+s.charAt(i)-'0';i++;}stack1.addLast(num);}else{char ch=s.charAt(i);if(ch=='+'||ch=='-')//加减号入栈{stack.add(ch);i++;}else {//乘除号计算结果后入栈i++;int num2=0;while (s.charAt(i)==' ') i++;while (i<n&&Character.isDigit(s.charAt(i))){num2=num2*10+s.charAt(i)-'0';i++;}if(ch=='*')stack1.add(num2*stack1.removeLast());else stack1.add(stack1.removeLast()/num2);}}}while (!stack.isEmpty()){//计算剩下的+-运算int a=stack1.removeFirst();int b=stack1.removeFirst();if(stack.removeFirst()=='+') {stack1.addFirst(a+b);}else stack1.addFirst(a-b);}return stack1.getFirst();}
}

leetcode面试题 16.26. 计算器(栈)相关推荐

  1. 面试题 16.26. 计算器

    面试题 16.26. 计算器 给定一个包含正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法 ...

  2. 程序员面试金典 - 面试题 16.26. 计算器(栈)

    1. 题目 给定一个包含 正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. ...

  3. leetcode —— 面试题 16.19. 水域大小

    你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...

  4. leetcode面试题 16.21. 交换和(二分查找)

    给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素.若有多个答案,返回任 ...

  5. leetcode面试题 16.04. 井字游戏

    设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...

  6. leetcode面试题 16.19. 水域大小(深度优先搜索)

    你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...

  7. LeetCode——面试题 16.19. 水域大小

    水域大小 题目 深搜思路 代码 结果 广搜思路 代码 结果 题目 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域 ...

  8. LeetCode Algorithm 面试题 16.10. 生存人数

    面试题 16.10. 生存人数 Ideas 区间只有101年,直接建立一个长度为101的数组,然后遍历每个人的时候,把这个人从出生到死亡每一年的生存人数+1,最后输出第一个最大生存人数的位置索引就可以 ...

  9. c# 两个list比较_C#刷遍Leetcode面试题系列连载(1) 入门与工具简介(VS Code amp; VS)...

    什么要刷LeetCode 大家都知道,很多对算法要求高一点的软件公司,比如美国的FLAGM (Facebook.LinkedIn.Amazon/Apple.Google.Microsoft),或国内大 ...

最新文章

  1. logging 模块记录日志
  2. 如何使用阿里云主机搭建lordofpomelo
  3. lua学习笔记之开始
  4. php 5.6 新特性,PHP5.6新特性介绍
  5. 计算机在科技英语翻译中起的作用,浅谈科技英语翻译中英语词语的正确理解与表达...
  6. Halcon的应用程序 打开后 弹出没有帮助文件错误提示
  7. delphi 侧边栏_Delphi 开发工具各版本官方下载地址
  8. 联想电脑管家和驱动人生 驱动版本对比
  9. 服务器虚拟化2种架构,服务器虚拟化常用架构详解
  10. 数理统计SPSS软件实验报告一--描述性统计
  11. c语言csp字符串,骇人听闻的 CSP
  12. 奥克兰大学计算机科学专业学费,奥克兰大学各专业学费
  13. vue+css3 旋转木马效果
  14. HDU 1546 Idiomatic Phrases Game 最短路
  15. 统计打印字符串arg中每个字符出现的次数
  16. 多节点Linux部署
  17. 06年及以前韩国星际职业联赛及选手资料
  18. 哈哈日语 日语五十音学记资料汇编
  19. latex 编译eps文件时的问题
  20. 图片识别 python 神经网络,人工神经网络图像识别

热门文章

  1. 【学会如何学习系列】从婴儿到大学——学习的本质从未改变过
  2. 多线程顺序交替打印ABCD
  3. Java高级工程师每日面试题精选,面试经历分享
  4. 面试中Handler这些必备知识点你都知道吗?面试真题解析
  5. day03 基本数据类型
  6. Lrc歌词-开发标准 (转)
  7. VC++和VC++.NET中与图像处理有关的几个概念、结构和类
  8. Mac OS 被XCode搞到无法正常开机怎么办?
  9. SpringBoot + MyBatis(注解版),常用的SQL方法
  10. C#的特性Attribute