当前位置: 首页 > news >正文

石家庄市栾城区建设局网站北京高端网站建设飞沐

石家庄市栾城区建设局网站,北京高端网站建设飞沐,服务器上给网站做301跳转,wordpress添加下载文件224. 基本计算器给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1:输入:s "1 1"输出:2示例 2&#…

224. 基本计算器

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()

示例 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" 和 "+(2 + 3)" 无效)

  • '-' 可以用作一元运算(即 "-1" 和 "-(2 + 3)" 是有效的)

  • 输入中不存在两个连续的操作符

  • 每个数字和运行的计算将适合于一个有符号的 32位 整数

如何实现一个计算器 :: labuladong的算法小抄 (gitee.io)

思路:栈

当i遇到运算符时,将前一个num和sign入栈,然后再更新sign为当前运算符,num为0。

这里还额外实现了'*'、'/',为了做到先乘除后加减:

'+'、'-' 运算符只能给栈内push值,而'*'、'/' 运算符可以从栈内pop出被乘数或被除数,再将乘除运算后的结果push入栈内。

class Solution {
public:int calculate(string s){int index=0;return deal(s,index);}int deal(string& s,int& i) //注意:传入i的引用{stack<int> st;int num=0;char sign='+';//记录num前的符号,默认为'+'for(;i<s.size();i++){char c=s[i];if(c=='(')//遇到左括号,开始递归,求(...)算出的值{num=deal(s,++i);//因为传入的是i的引用,所以递归调用结束后,i此时就是与该'('对应的')'的下标}if(isdigit(c)){num=num*10+(c-'0');}if((!isdigit(c)&&c!=' ')||i==s.size()-1)//遇到运算符或者来到字符串末尾,将前一个num和sign入栈(跳过' '){int temp=0;switch(sign)//前一个num的符号{case '+':st.push(num);break;case '-':st.push(-num);break;case '*':temp=st.top();st.pop();st.push(temp*num);break;case '/':temp=st.top();st.pop();st.push(temp/num);break;}sign=c;//更新当前num的符号num=0;//更新num的值}if(c==')')//遇到右括号,结束递归break;}int res=0;while(!st.empty())//栈内所有的元素之和即为表达式之值{res+=st.top();st.pop();}return res;}
};

http://www.15wanjia.com/news/156084.html

相关文章:

  • 织梦网站动态sogou网站提交
  • 做组织架构图的网站作为一个大学生网站 应该怎么做
  • 常用网站后缀设计比较好的网站
  • seo整站优化一年价格多少做网站几天能学会
  • 一个专做里番的网站专业深圳网站建设
  • 公司网站建设 宁波wordpress定制分类
  • 网站标题的选择河南省交通基本建设质量检测监督站网站
  • 泉州制作网站开发做c 题的网站
  • wordpress个人网站后台登陆护理专业建设规划
  • 建站之星网站成品分离网站建设维护多少钱
  • 设计的很好的网站企业品牌推广宣传方案
  • 服装公司做哪个网站设计软件cad
  • 网站建设属于软件开发吗优秀企业网站设计要点
  • 长春专业网站建设模板代理做网站简介
  • 做固定背景网站建工教育网
  • 公司门户网站首页用网站做淘宝客
  • 织梦如何做二级网站wordpress下载网站模板怎么用
  • 廊坊做网站费用哪个免费的网站建设好
  • 域名注册后怎么做网站网站建设网络推广的好处
  • QQ可以在网站做临时会话么wordpress网站攻击
  • 网站建设公司效益怎么样禅城区网站建设公司
  • 广州市天河区建设局网站北京网站建设联系兴田德润
  • 制作网站制作网站建设的公司网站设计
  • 常熟专业做网站咸宁住房和城乡规划建设局网站
  • python做网站好不好蚌埠seo
  • 公司网站建设需要注意哪些内容建设银行官方网站手机版下载
  • 自做网站北京公司注销流程
  • 六安网站磁县网络推广
  • 酒泉网站建设平台wordpress文章语言切换
  • 微网站开发素材生物科技网站模板