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

leetcode 227 基本计算器II

一、题目描述

二、解题思路

整体思路

本题目本质上属于表达式求值的问题,我们可以借助结构来解决这个问题,为了方便起见,我们无需真的利用栈来解决,可以用数组来模拟栈结构。

具体思路

(1)变量初始化。st数组用于模拟栈结构,i用于遍历字符串,op记录最近的符号,初始化为'+',因为a和+a的值相同;

(2)遍历字符串

<1>如果s[i]为空格,就跳过空格;

注意:不要将while写成if了,因为if只能跳过一个空格,导致有些示例跑不过

<2>如果s[i]是数字:

1)首先,利用变量tmp把数字提取出来;

2)如果当前的op为'+',表示这个部分的计算结果为tmp本身,于是将tmp压入栈;

3)如果当前的op为'-',表示这个部分的计算结果为tmp的相反数,于是将-tmp压入栈;

4)如果当前的op为'*',就将栈顶元素修改为st.back()*tmp;

5)如果当前的op为'/',就将栈顶元素修改为st.back()/tmp;

<3>如果s[i]为符号,就修改op,并实现i++;

(3)循环结束后,栈中所存的结果实际上是每一部分计算的结果。将它们累加即为最终的结果,返回sum即可;

三、代码实现

class Solution {
public:int calculate(string s) {//用数组模拟栈解题vector<int> st;int i=0,n=s.size();char op='+';while(i<n){//如果为空字符,跳过while(s[i]==' ') i++;//如果为数字if(s[i]>='0' && s[i]<='9'){//把数字提取出来int tmp=0;while(i<n&&s[i]>='0'&&s[i]<='9')tmp=tmp*10+(s[i++]-'0');if(op=='+') st.push_back(tmp);else if(op=='-') st.push_back(-tmp);else if(op=='*') st.back()*=tmp;else if(op=='/') st.back()/=tmp;}//如果为运算符else{op=s[i];i++;}} int sum=0;for(auto x:st) sum+=x;return sum;}
};
http://www.dtcms.com/a/546157.html

相关文章:

  • 酒泉网站建设与制作网站结构有哪些
  • 【Vue】若依框架树形选择器和显示
  • 力扣hot100之最长连续序列(java版)
  • 买了两台服务器可以做网站吗seoapp推广
  • GXDE For deepin 25:deepin25 能用上 GXDE 了!
  • 搜房网站要怎么 做网站做成app
  • 网站建设教学视频百度云盘无锡电商网站设计
  • 【MIT 6.5840/6.824】Lab3 Raft
  • 在哪网站开发软件制作企业网站得多长时间
  • 异构系统集成提速:重构企业数据流转架构
  • 在OpenHarmony上适配图形显示【5】——DRM 设备信息查询工具drm_info
  • 校园网站制度建设淘宝网页版怎么退出登录
  • Rust 中的零拷贝技术:从原理到实践的深度探索 [特殊字符]
  • 泰州网站建设多少钱什么是4c品牌建设模型
  • 公司网站模板源代码亳州网站建设推广
  • Linux驱动的加载与卸载
  • 二学一做专题网站无锡网页制作报价
  • 装修公司做自己网站珠海网站制作费用
  • 手机网站建站公司wordpress关于本站
  • 网站数字签名做网站能挣钱么
  • 温州做网站的wordpress the7.6
  • 中华古文明的视觉史诗:郭泰来以当代彩墨重构“上古三经”——迟来的祝贺:图书《山海经》荣获“出版奖”
  • Rust BTreeMap 红黑树
  • 为代理网站做网站wordpress站群作用
  • 网站上社保做增员怎么做wordpress html 代码
  • Lua--协程
  • 建立网站目录结构的原则优化二十条
  • 远近互联网站建设成品网站源码1688danji6
  • 枣庄三合一网站开发公司软件开发模型的v模型图
  • 生成式人工智能在教育领域的技术适配性研究:挑战、风险与应对方案