题目:

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +-*/ operators and empty spaces . The integer division should truncate toward zero.

You may assume that the given expression is always valid.

Some examples:

"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5

Note: Do not use the eval built-in library function.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

代码:

class Solution {
public:int calculate(string s) {stack<int> st;int result = 0;int i = 0;while(i<s.size()){int sum = 0;if(i<s.size()&&s.at(i)>='0'&&s.at(i)<='9'){while(i<s.size()&&s.at(i)>='0'&&s.at(i)<='9'){sum = sum * 10 + s.at(i)-'0';i++;  }st.push(sum);}else if(i<s.size()&&s.at(i)=='+'){st.push((int)s.at(i));  i++;}else if(i<s.size()&&s.at(i)=='-'){st.push((int)s.at(i));i++;}else if(i<s.size()&&s.at(i)=='*'){int a = st.top();st.pop();int sum1 = 0;i++;while(s.at(i)==' '){i++;}if(i<s.size()&&s.at(i)>='0'&&s.at(i)<='9'){while(i<s.size()&&s.at(i)>='0'&&s.at(i)<='9'){sum1 = sum1 * 10 + s.at(i)-'0';i++;          }a*=sum1;st.push(a);  }}else if(i<s.size()&&s.at(i)=='/'){ int a = st.top();st.pop();int sum1 = 0;i++;while(s.at(i)==' '){i++;}while(i<s.size()&&s.at(i)>='0'&&s.at(i)<='9'){sum1 = sum1 * 10 + s.at(i)-'0';i++;}a = (int)(a/sum1);st.push(a);}else {i++;}}stack<int> st1;while(!st.empty()){st1.push(st.top());st.pop();              }while(!st1.empty()){int a = st1.top();st1.pop();if(st1.empty())return a;else{if((char)(st1.top())=='+'){st1.pop();int temp = st1.top()+a;st1.pop();st1.push(temp);}else if((char)(st1.top())=='-'){st1.pop();int temp = a-st1.top();st1.pop();st1.push(temp);}}}return st1.top();}
};

方法比较繁琐。。。就这样了。

转载于:https://www.cnblogs.com/sunp823/p/5601419.html

leetcode_Basic Calculator II相关推荐

  1. LeetCode OJ Basic Calculator II

    Basic Calculator II 题目 思路 和这个一样:Basic Calculator I 代码 class ExpressionTransformation { public:string ...

  2. 【LeetCode】Basic Calculator II

    Basic Calculator II 问题描述 Implement a basic calculator to evaluate a simple expression string. The ex ...

  3. LeetCode Basic Calculator II(加减乘除计算器)

    与 LeetCode Basic Calculator(用栈计算表达式的值)相似 代码如下: public class Solution {private int cal(int num1, int ...

  4. Basic Calculator II

    该题和前面的" Basic Calculator "的处理方法一样,仅仅是增加了对"*"."/"两种运算的支持. class Solutio ...

  5. [Swift]LeetCode227. 基本计算器 II | Basic Calculator II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. 227 Basic Calculator II

    1 题目 Implement a basic calculator to evaluate a simple expression string.The expression string conta ...

  7. 227. Basic Calculator II

    The expression string contains only non-negative integers, +, -, *, / operators and empty spaces. Th ...

  8. leetcode 227. Basic Calculator II | 227. 基本计算器 II(中缀表达式求值)

    题目 https://leetcode.com/problems/basic-calculator-ii/ 题解 这道题是 中缀表达式求值 的简化版(因为没有左右括号运算),不过输入的形式有两个处理起 ...

  9. leetcode----227. Basic Calculator II

    链接: https://leetcode.com/problems/basic-calculator-ii/ 大意: 实现一个计算器.给定一个字符串s,字符串s中的字符由'0'-'9'的数字以及'+' ...

最新文章

  1. Hadoop 分布式环境搭建
  2. Django博客系统(短信验证码)
  3. HBase搭建完全分布式环境
  4. 用html+ccs3就能 做出一个太阳系行星
  5. 大厂产品专家是怎么做项目的?
  6. JavaWeb课程复习资料(六)——DAO与DAOImpl层封装
  7. 要想提高工作效率,请拒绝做这7种事
  8. oracle改成归档模式_oracle 11g开启归档模式及修改归档目录
  9. kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法
  10. javaScript几种设计模式之一——单体模式
  11. 网页优化系列三:使用压缩后置viewstate
  12. 企业真实面试题总结(二)
  13. 北大青鸟python学费_北大青鸟学费贵吗,北大青鸟学费标准_北大青鸟综合校区为您解答...
  14. 趋势杀毒文件服务器版10用户,趋势杀毒软件(OSCE 10.0)服务器端备份与恢复
  15. 抖音昵称html,抖音个性网名带特殊符号 带漂亮符号的抖音昵称
  16. 告别奇虎360、依图科技,再谋他途!依图CTO颜水成被曝离职!
  17. vs2010学习版loadimage();函数载入图片无法加载的问题
  18. 解决JS双击事件dblclick触发时,同时会执行click事件中的语句
  19. 鹰眼轨迹管理平台移植
  20. 使用FFmpeg 批量处理视频

热门文章

  1. 【缅怀妈妈系列诗歌】之八:妈妈,我不会忘记
  2. 看到这一切,我忍俊不禁
  3. MySql 你知道什么情况下适合使用Join 联表查询吗 ?
  4. Flutter BottomNavigationBar 三分钟实现一个常用APP首页底部导航菜单栏
  5. postgresql9.1_gaussdb200_解析表结构
  6. 简单工厂模式、工厂方法模式与抽象工厂模式的区别(转)
  7. javascript检测浏览器类型和版本号(兼容各浏览器)
  8. 关于Cocos2d-x随机数的生成
  9. EZchip将推全球首款100核64位ARM A-53芯片
  10. 实现一个靠左靠右靠中间的listview