【LeetCode - 224】基本计算器(栈)

实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。

题目链接:https://leetcode-cn.com/problems/basic-calculator/

示例 1:

输入:s = "1 + 1"
输出:2
示例 2:

输入:s = " 2-1 + 2 "
输出:3
示例 3:

输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23
 

提示:

1 <= s.length <= 3 * 105
s 由数字、'+'、'-'、'('、')'、和 ' ' 组成
s 表示一个有效的表达式

解题报告:

  巧妙利用了栈。

由于字符串除了数字与括号外,只有加号和减号两种运算符。因此,如果展开表达式中所有的括号,则得到的新表达式中,数字本身不会发生变化,只是每个数字前面的符号会发生变化。

所以用一个{+1, -1}的符号栈,栈顶元素就代表当前括号内所有符号的一个“基础符号”,也就是最终该符号后面的数字,到底是+还是-,是要看“基础符号”和该符号,来共同决定的。搞明白这个栈的作用,这题就简单了,右括号就出栈,左括号就入栈,实时维护当前sign就行了。

AC代码:

class Solution {
public:int calculate(string s) {stack<int> sk;sk.push(1);int i = 0,sign = 1;long long  ans = 0;while(i < s.length()) {if(s[i] == '(') sk.push(sign);else if(s[i] == ')') sk.pop();else if(s[i] == '+') sign = (sk.top() == 1 ? 1 : -1);else if(s[i] == '-') sign = (sk.top() == 1 ? -1 : 1);else if(s[i] >= '0' && s[i] <= '9') {long long tmp = 0;while(i < s.length() && s[i]>='0'&&s[i]<='9') {tmp = tmp * 10 + s[i] - '0';i++;} i--;ans += sign * tmp;printf("%lld\n",ans);}i++;}return ans;}
};

 

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

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

相关文章

【转】2.1 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

本节将会介绍SharePoint中最为常用的一些对象模型&#xff0c;以及如何使用这些对象模型来访问和操作网站中的数据。几乎所有的SharePoint服务器端开发都会涉及到这些内容&#xff0c;因此应着重掌握本节中所介绍的基本对象模型的使用方法。由于篇幅所限&#xff0c;在介绍每种…

【LeetCode - 1047】删除字符串中的所有相邻重复项(栈)

https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复…

【转】2.2 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)

&#xff08;二&#xff09;列表&#xff08;SPList&#xff09; 列表是SharePoint中最为重要的数据容器&#xff0c;我们一般保存在SharePoint中的所有数据&#xff0c;都是保存在列表中&#xff08;文档库也是一种列表&#xff09;&#xff0c;因此列表对象在SharePoint的开…

【LeetCode - 227】基本计算器 II(栈)

https://leetcode-cn.com/problems/basic-calculator-ii/ 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1&#xff1a; 输入&#xff1a;s "32*2" 输出&#xff1a;7 示例 2&#xff1a; 输入…

Team Foundation Server的回滚操作

VSTF Rollback 操作 最近遇到要把有些项目需要做回滚操作&#xff0c;发现TFS的UI上没有回滚的操作。 经过百度&#xff0c;查到一个CSDN上的博主发了一种方法&#xff0c;经过验证&#xff0c;那种方法是错误的&#xff1a; 他通过先获取指定变更集-》签出-》签回去&#xff…

【LeetCode - 141142】环形链表(i和ii)(快慢指针,链表)

https://leetcode-cn.com/problems/linked-list-cycle/ 给定一个链表&#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾…

sharepoint的文件是怎样存放的及存放的表是哪个

主要有两个表&#xff0c;一个是AllDocs&#xff0c;另一个是AllDocStreams&#xff0c;在AllDocstreams有一个content字段&#xff0c;这个字段是用来保存文件内容的&#xff0c;这个字段最大只能放2G&#xff0c;这也就是SharePoint上传文件最大不能超过2G的原因。 表 AllDoc…

【LeetCode - 556】下一个更大元素 III(贪心,思维)

https://leetcode-cn.com/problems/next-greater-element-iii/ 给你一个正整数 n &#xff0c;请你找出符合条件的最小整数&#xff0c;其由重新排列 n 中存在的每位数字组成&#xff0c;并且其值大于 n 。如果不存在这样的正整数&#xff0c;则返回 -1 。 注意 &#xff0c;…

SharePoint Pages(1)之SharePoint页面体系架构

[开篇]最近一段时间在研究SharePoint技术&#xff0c;在内网建设了一个门户的原型&#xff0c;做一些尝试。由于一些需求要新建一些功能页。开始使用SharePoint制作页面&#xff0c;搞了半天才明白原来内容页不支持内联代码&#xff0c;在Visual Studio里面捣鼓了半夜&#xff…

逆序数问题,用归并排序而非树状数组求解

逆序数&#xff0c;结合归并排序。 之前一直用树状数组写的&#xff0c;今天发现归并排序也很好写。 https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tabanswerKey class Solution { public:int a[200005] {0}, tmp[200005] {0};int sort(int left…

SharePoint安全 - SharePoint网站常用页面URL索引

一. 主要网站内容 首页 /default.aspx /Pages/default.aspx 网站设置 /_layouts/settings.aspx 所有网站内容 /_layouts/viewlsts.aspx 移动端所有网站内容 /_layouts/mobile/mbllists.aspx 共享文档 /shared documents/forms/allitems.aspx 管理网站内容结构 /_l…

docker安装与学习

安装Docker 系统环境&#xff1a;macOS Catalina 10.15.7 通过brew安装docker brew install --cask --appdir/Applications docker 直接brew install docker装上的好像不是&#xff0c;好像是当成了formula了。如下图 brew cask install docker直接提示命令不对&#xff0c…

集群、分布式、负载均衡区别与联系

1、Linux集群主要分成三大类( 高可用集群&#xff0c; 负载均衡集群&#xff0c;科学计算集群) 集群是一个统称&#xff0c;他分为好几种&#xff0c;如&#xff1a;高性能科学群集、负载均衡群集、高可用性群集等。 科学群集 、高性能集群&#xff08;High performance clus…

Mac下使用brew的常用步骤

以docker为例&#xff1a; 第一步&#xff1a; 先 brew search 软件名 然后发现在Formulae和Casks中都有docker包。 第二步&#xff1a; 分别查看info brew info dockerbrew info homebrew/cask/docker 从详情中可以看出&#xff0c;cask下的才是Docker Desktop for Mac&a…

End User 访问SharePoint URL获取数据流程

当一个User用一个独立的URL请求一个Page页的时候&#xff0c;Client端要创建一个Http请求数据包。然后&#xff0c;Client通过解析DNS去获取HostName来确定IP地址&#xff1a;比如Intranet.contoso.com 客户端在数据包的HostHeader Field添加HostName —>客户端然后通过默…

【MOSS】快速调试Sharepoint站点

1、打开网站根目录下的web.config 1.将<SafeMode ... CallStack"false" ...... AllowPageLevelTrace"false">中的CallStack和AllowPageLevelTrace的属性设置为“true”。 2、 将<customErrors mode"On" />的mode改为"Off&quo…

【机器学习】 - keras中的模型可视化plot_model模块(含依赖包pydot和graphviz的详细安装过程与注意事项)

运行环境&#xff1a; win10 anaconda3-spyder python3.7.4 tensorflow2.0.0 首先需要安装两个包pydot和graphviz&#xff0c;不然会报错&#xff1a; Failed to import pydot. You must install pydot and graphviz for pydotprint to work. 然后去anaconda prompt 里去…

Sharepoint域账户,运行Power Shell报错

以其他域账户登陆Sharepoint 2013 服务器&#xff0c;并以管理员权限运行SharePoint 2013 Management Shell时&#xff0c;出现如下错误&#xff1a; The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered. 同时&#xff0c;所有SharePoin…

【Linux学习】常用指令-sortunique

假设当前文件叫file.txt sort将文件的每一行作为一个单位&#xff0c;相互比较&#xff0c;比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出。 sort的-u选项 它的作用很简单&#xff0c;就是在输出行中去除重复行。 sort的-r选项…

【Linux学习】强大的文本分析工具AWK

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 调用AWK&#xff1a; 1.命令行方式&#xff08;常用&#xff09; awk [-F field-separator] commands input-file(s) 其中&#xff0c;comman…