class Solution {
public:
stack<int> OPD;
stack<char> OPR;
int calculate(int num1, int num2, char opr){
switch (opr){
case '+':{
return num1 + num2;
}
case '-':{
return num1 - num2;
}
case '*':{
return num1*num2;
}
case '/':{
return num1 / num2;
}
}
}
int calculate(string s) {
int len = s.size();
int i=;
while(i<len){
if (s[i] == ' '){
i++;
}
else if (s[i] == '+' || s[i] == '-' || s[i]=='*' || s[i]=='/'){
OPR.push(s[i]);
i++;
}
else{
int num = ;
while (i < len && s[i] >= '' && s[i] <= ''){
num = num * + (s[i] - '');
i++;
}
if (!OPR.empty() && (OPR.top()=='/' || OPR.top()=='*')){
num = calculate(OPD.top(),num,OPR.top());
OPR.pop();
OPD.pop();
}
OPD.push(num);
}
}
int res=;
while (!OPR.empty()){
int tmp=OPD.top();
char ch=OPR.top();
if(ch=='-'){
tmp=-tmp;
}
res+=tmp;
OPD.pop();
OPR.pop();
}
res+=OPD.top();
return res;
}
};

leetcode227的更多相关文章

  1. LeetCode227:Basic Calculator II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

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

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  3. leetcode227. Basic CalculatorII

    这道题是只有四则运算但是没有括号的,因此可以利用stack来存储的,并且每次使得存储的值与符号有对应的关系,最后在栈中只剩下可以利用加法进行处理的数的,注意在i=n-1的时候到达最后的部分也是需要把数 ...

  4. leetcode227 基本计算器

    1先利用符号栈转化为逆波兰表达式,并添加‘,’作为一个数字的结尾: 2然后利用数字栈计算逆波兰表达式的值: class Solution { public: int calculate(string ...

  5. LeetCode227:基本计算器II

    感觉自己的思路还不错,比较简单清晰,代码量也比较少,没有用到记录运算符的变量或栈,就想把这个思路发一下博客. 题目: 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数 ...

  6. LeetCode 227. 基本计算器 II(Basic Calculator II)

    227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...

随机推荐

  1. 数据库表结构转成设计书,PowerDesigner 表格导出为excel

    数据库中的表导入到PowerDesigner中并转为excel文档 1.打开PowerDesigner12,在菜单中按照如下方式进行操作 file->Reverse Engineer->D ...

  2. web页面的数据从excel中读取

    # -*- coding: utf-8 -*- import xdrlib ,sysimport xlrdimport datetimeimport jsonimport conf,reimport ...

  3. laravel记住登录、设置时间

    laravel 自动登陆的时间改如何实现? 控制器 public function login(){ $email =Input::get('email');$password  = Input::g ...

  4. stenciljs 学习四 组件装饰器

    stenciljs 可以方便的构建交互式组件 支持以下装饰器 component prop watch state method element component 说明 component 包含ta ...

  5. VdcEye manager

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011652271/article/details/24878335 VdcEye manager ...

  6. 【转】每天一个linux命令(59):rcp命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/03/14/2958685.html rcp代表“remote file copy”(远程文件拷贝).该命 ...

  7. Map 的营救;使对象属性有顺序

    使用ES6的新特性Map.Map 对象以插入的顺序遍历元素.for...of循环为每一次循环返回一个[key, value]数组. 如果想在跨浏览器环境中模拟一个有序的关联数组,你要么使用两个分开的数 ...

  8. C#创建文件夹和文件

    一.创建文件夹,例: if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } 二.创建文件,例: global::Syste ...

  9. 【python】if&&for&&while语句

    if语法:  类型一: if expression : if_suit else: else_suit 例如: adic={"name":"paulwinflo" ...

  10. 多线程执行顺序诡异现象谈,你不知道的pthread_create

    引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点放在了多线程和多进程上,跑了一个实例,居然有新的发现: (1)多个 ...