leetcode面试题 16.26. 计算器(栈)
给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。
表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
示例 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. 计算器(栈)相关推荐
- 面试题 16.26. 计算器
面试题 16.26. 计算器 给定一个包含正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法 ...
- 程序员面试金典 - 面试题 16.26. 计算器(栈)
1. 题目 给定一个包含 正整数.加(+).减(-).乘(*).除(/)的算数表达式(括号除外),计算其结果. 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. ...
- leetcode —— 面试题 16.19. 水域大小
你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...
- leetcode面试题 16.21. 交换和(二分查找)
给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等. 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素.若有多个答案,返回任 ...
- leetcode面试题 16.04. 井字游戏
设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...
- leetcode面试题 16.19. 水域大小(深度优先搜索)
你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域为池塘.池塘的大小是指相连接的水域的个数.编写一个方法来计算矩阵中 ...
- LeetCode——面试题 16.19. 水域大小
水域大小 题目 深搜思路 代码 结果 广搜思路 代码 结果 题目 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度.若值为0则表示水域.由垂直.水平或对角连接的水域 ...
- LeetCode Algorithm 面试题 16.10. 生存人数
面试题 16.10. 生存人数 Ideas 区间只有101年,直接建立一个长度为101的数组,然后遍历每个人的时候,把这个人从出生到死亡每一年的生存人数+1,最后输出第一个最大生存人数的位置索引就可以 ...
- c# 两个list比较_C#刷遍Leetcode面试题系列连载(1) 入门与工具简介(VS Code amp; VS)...
什么要刷LeetCode 大家都知道,很多对算法要求高一点的软件公司,比如美国的FLAGM (Facebook.LinkedIn.Amazon/Apple.Google.Microsoft),或国内大 ...
最新文章
- logging 模块记录日志
- 如何使用阿里云主机搭建lordofpomelo
- lua学习笔记之开始
- php 5.6 新特性,PHP5.6新特性介绍
- 计算机在科技英语翻译中起的作用,浅谈科技英语翻译中英语词语的正确理解与表达...
- Halcon的应用程序 打开后 弹出没有帮助文件错误提示
- delphi 侧边栏_Delphi 开发工具各版本官方下载地址
- 联想电脑管家和驱动人生 驱动版本对比
- 服务器虚拟化2种架构,服务器虚拟化常用架构详解
- 数理统计SPSS软件实验报告一--描述性统计
- c语言csp字符串,骇人听闻的 CSP
- 奥克兰大学计算机科学专业学费,奥克兰大学各专业学费
- vue+css3 旋转木马效果
- HDU 1546 Idiomatic Phrases Game 最短路
- 统计打印字符串arg中每个字符出现的次数
- 多节点Linux部署
- 06年及以前韩国星际职业联赛及选手资料
- 哈哈日语 日语五十音学记资料汇编
- latex 编译eps文件时的问题
- 图片识别 python 神经网络,人工神经网络图像识别