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. 解决安装vmware-tools出现的“The path "" is not a valid path to the 3.2.0-4-amd64 kernel headers”问题

    在用虚拟机安装使用64位Crunchbang(一种Debian GNU/Linux 的linux)的过程中出现很多小问题.其中vmware-tools安装就是第一个问题. 在使用终端安装vmware- ...

  2. setsebool命令详解与SELinux管理

    setsebool命令是用来修改SElinux策略内各项规则的布尔值.setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组.SELinux的策略与规则管理相关命令 ...

  3. SQLite数据库学习小结——Frameworks层实现

    3. SQLite的Frameworks层实现 3.1 Frameworks层架构 Android系统方便应用使用,在Frameworks层中封装了一套Content框架,之所以叫Content框架而 ...

  4. python list 的查找, 搜索, 定位, 统计

    Python中是有查找功能的,四种方式:in.not in.count.index,前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hello'],为 ...

  5. MySQL账号安全设置

    ======================================================================== 推荐账号安全设置 在数据库服务器上严格控制操作系统的账 ...

  6. 清理IE和使用历史痕迹

    清除IE临时文件的Batch脚本 @echo off title: IE temporary file deleter echo 正在 清除Internet临时文件 ............ RunD ...

  7. 解决python2安装MySQL-python模块报错

    今天电脑重装系统,所有软件都重装一遍,MySQLdb模块一直装不好,纠结了好久,终于解决,方法分享给大家. MySQLdb模块安装: 1.下载MySQL-pyhon模块,网站为:https://pyp ...

  8. PHP错误和异常处理

    1.错误报告级别: 错误E_ERROR; 警告 E_WARNING 注意 E_NOTICE 2.php.ini 中的配置 error_reporting=;  错误提示 一般设置为: error_re ...

  9. java 中getDeclaredFields() 与getFields() 的区别

    java 中getDeclaredFields() 与getFields() 的区别 getDeclaredFields()返回Class中所有的字段,包括私有字段.例证: package com.t ...

  10. BASIC-15_蓝桥杯_字符串对比

    示例代码: #include <stdio.h>#define N 10 int main(void){ int i = 0 ; int len1 = 0 , len2 = 0 , fla ...