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

1. 题目

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

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

示例 1:
输入: "3+2*2"
输出: 7示例 2:
输入: " 3/2 "
输出: 1示例 3:
输入: " 3+5 / 2 "
输出: 5说明:
你可以假设所给定的表达式都是有效的。
请不要使用内置的库函数 eval。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/calculator-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

几个易错例子
"2147483647"
" 3+5 / 2 "
"+3+2*2"
"-3+2*2"
class Solution {
public:int calculate(string s) {long a, sum, i = 0;char op = '+';while(i < s.size() && s[i]==' ')i++;//处理空格stack<int> stk;if(i < s.size() && s[i] == '+')i++;else if(i < s.size() && s[i] == '-'){op = '-';i++;}for( ; i < s.size(); ++i){a = 0;while(i < s.size() && s[i]==' ')i++;//处理空格while(i < s.size() && isdigit(s[i]))a = a*10+s[i++]-'0';if(op == '*'){	a = stk.top() * a;stk.pop();sum = 0;while(!stk.empty()){sum += stk.top();stk.pop();}stk.push(sum);stk.push(a);}else if(op == '/'){	a = stk.top() / a;stk.pop();sum = 0;while(!stk.empty()){sum += stk.top();stk.pop();}stk.push(sum);stk.push(a);}else if(op == '-')stk.push(-a);elsestk.push(a);while(i < s.size() && s[i]==' ')i++;//处理空格if(i < s.size())op = s[i];}sum = 0;while(!stk.empty()){sum += stk.top();stk.pop();}return sum;}
};

20 ms 8.8 MB

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

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

相关文章

深度学习撞墙?谷歌:是时候动用钞能力了

文 | 天于刀刀推特上万众瞩目的明星语言大模型比赛项目 Inverse Scaling Prize 终于在近期落下了帷幕&#xff0c;这也是社区中第一次针对 scaling law 反例的探究&#xff0c;各式各样的大模型和 NLP 任务在比赛期间被提出和应用&#xff0c;同样许许多多的成果也在这次比赛中…

python教程输入_python怎么输入一个集合

set()函数创建一个无序不重复元素集&#xff0c;可进行关系测试&#xff0c;删除重复数据&#xff0c;还可以计算交集、差集、并集等。 set 语法&#xff1a; class set([iterable]) 参数说明&#xff1a; iterable -- 可迭代对象对象&#xff1b; 返回值&#xff1a; 返回新的…

来了就不会空着手回去.

如果您需要帮助,可以到我的"文章"去看看,也许对您有帮助....以动手实践为荣 , 以只看不练为耻;以打印日志为荣 , 以单步跟踪为耻;以空格缩进为荣 , 以制表缩进为耻;以单元测试为荣 , 以人工测试为耻;以模块复用为荣 , 以复制粘贴为耻;以多态应用为荣 , 以分支判断为耻…

LeetCode 第 23 场双周赛(970/2044,前47.5%)

文章目录1. 比赛结果2. 题目1. LeetCode 5360. 统计最大组的数目 easy2. LeetCode 5362. 构造 K 个回文字符串 medium3. LeetCode 5361. 圆和矩形是否有重叠 medium4. LeetCode 5363. 做菜顺序 hard1. 比赛结果 做出来了 1、3 两题&#xff0c;继续加油&#xff01; 第二道字符…

杀疯了…4个月发表论文的实操手册来了!

科研的本质&#xff1a;解决问题&#xff0c;创造新事物(新问题、新方法、新发现、新理论)科研论文的关键的体现在于将所得结果详实记录并进行科学分析后&#xff0c;总结成果写成论文由同行评议认可后发表。科研的完整过程那么如何在4-6个月内产出论文呢&#xff0c;这次我和一…

tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...

今天我们来说一说数据可视化&#xff0c;想必很多人在入门数据分析之后&#xff0c;就会经常进行可视化的工作&#xff0c;所谓一图胜千言&#xff0c;图表用的好&#xff0c;真的是会事半功倍的。但现实情况下&#xff0c;很多人遇到的问题是&#xff1a;你做的图表太丑了&…

WinForm的App.config

项目右键&#xff0d;&#xff0d;添加&#xff0d;&#xff0d;添加新项&#xff0d;&#xff0d;选择应用程序配置文件 即出现App.config.打开App.config, 键入&#xff1a; <appSettings></appSettings>然后在 appSettings中就可以定义变量及变量的数值了。比…

LeetCode 1403. 非递增顺序的最小子序列(排序)

1. 题目 给你一个数组 nums&#xff0c;请你从中抽取一个子序列&#xff0c;满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。 如果存在多个解决方案&#xff0c;只需返回 长度最小 的子序列。如果仍然有多个解决方案&#xff0c;则返回 元素之和最大 的子…

独自一人,怒发AI顶会论文

长短作为曾经熬通宵肝论文的过来人&#xff0c;小编要吐槽&#xff0c;论文写久了真的会头秃&#xff0c;尤其是确定选题和找创新点、idea的时候&#xff0c;是薅头发事件的高发阶段。对于那些导师放养、在自己的摸索中磕磕绊绊前行的科研新手们&#xff0c;焦虑总是瞅准时机就…

winform响应时间最长是多少分钟_当詹姆斯退役时,他的总出场时间会达到多少分钟?...

在勒布朗-詹姆斯进入他职业生涯的第17个年头之际&#xff0c;Bleacher Report将目光锁定在了这位四届MVP的身上&#xff0c;在度过即将到来的2019-20赛季以及剩余的名人堂职业生涯之后&#xff0c;他的多项数据在联盟历史中会处于怎样的地位呢&#xff1f;詹姆斯已在历史排行榜…

[转载]WebBrowser知识

WebBrowser知识WebBrowser知识Q: What is WebBrowser?A: The WebBrowser is Microsofts Internet Explorer in the form of an ActiveX control. It can be imported into the Delphi IDE and dropped on a form like any other component. Therefore, you can harness the po…

LeetCode 1404. 将二进制表示减到 1 的步骤数(字符串加法)

1. 题目 给你一个以二进制形式表示的数字 s 。请你返回按下述规则将其减少到 1 所需要的步骤数&#xff1a; 如果当前数字为偶数&#xff0c;则将其除以 2 。如果当前数字为奇数&#xff0c;则将其加上 1 。 题目保证你总是可以按上述规则将测试用例变为 1 。 示例 1&#…

可以炸掉用户脑袋的VR设备来了!元宇宙与现实连接了?

编 | Aeneas 昕朋源 | 新智元游戏失败就杀死你的头显&#xff0c;就问你敢不敢戴&#xff1f;对于很多游戏设计者来说&#xff0c;游戏里的死亡根本不够刺激。在他们看来&#xff0c;要玩就玩真的——在游戏里死了&#xff0c;你就是真死了。Oculus VR创始人帕尔默洛基&#xf…

spark调用python_在MRS集群中使用Python3.7运行PySpark程序,调用RDD的take函数报错处理...

现象 如果我们安装了python3.7版本来运行spark&#xff0c;并且用到了RDD的take函数&#xff0c;就会报错&#xff1a;RuntimeError: generator raised StopIteration 我们可以编写一个python脚本test.py来进行测试&#xff0c;用spark-submit命令提交&#xff1a; spark-submi…

对称加密(DES)

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Security.Cryptography;usingSystem.IO;namespaceComponent{ public class Security { public Security() { } //默认密钥向量 private static …

AI终于能替我写论文了

编 | 小舟、陈萍源 | 机器之心Meta AI 提出了一个可以总结学术文献&#xff0c;解决数学问题的新模型&#xff0c;该模型还能生成百科文章&#xff0c;编写科学代码&#xff0c;注释分子和蛋白质等等。近年来&#xff0c;随着各学科领域研究的进步&#xff0c;科学文献和数据呈…

网站访问量怎么刷_基于爬虫刷新某网站访问量!我说怎么上千万呢

前言&#xff1a;前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章&#xff0c;当时还觉得蛮有意思的&#xff0c;就保存了一下&#xff0c;但是当我昨天准备复现的时候居然发现文章404了。所以本篇文章仅供学习交流&#xff0c;严禁用于商业用途当我在写文章的同时&…

入市

最近很忙&#xff0c;不是工作&#xff0c;是因为入市。 前天买入第一支股票开始&#xff0c;整个脑袋就开始忙碌起来。什么也顾不得了&#xff0c;时不时偷偷瞄几眼&#xff0c;跌了&#xff0c;就盯着股票曲线图&#xff0c;似乎自己多盯一会儿&#xff0c;那个曲线就会涨…

LeetCode 1405. 最长快乐字符串(贪心)

1. 题目 如果字符串中不含有任何 aaa&#xff0c;bbb 或 ccc 这样的字符串作为子串&#xff0c;那么该字符串就是一个「快乐字符串」。 给你三个整数 a&#xff0c;b &#xff0c;c&#xff0c;请你返回 任意一个 满足下列全部条件的字符串 s&#xff1a; s 是一个尽可能长的…

我裂开了...人类脑海中的画面,被AI解码了??

作者 | 白鹡鸰导言有没有那么几个瞬间&#xff0c;你要么想把自己脑子里的东西掏出来给别人看&#xff0c;要么想撬开别人的脑子看看里面都装了什么&#xff1f;虽然错过了霍格沃茨的入学时间&#xff0c;但如果从现在开始学习扩散模型和神经学&#xff0c;可能很快你就能实现这…