leetcode227 基本计算器

1先利用符号栈转化为逆波兰表达式,并添加‘,’作为一个数字的结尾;
2然后利用数字栈计算逆波兰表达式的值;
class Solution {
public:
int calculate(string s_mid) {
unordered_map<char,int> m={{'+',},{'-',},{'*',},{'/',}};
stack<char> s;
string s_re;
//转逆波兰表达式
for(int i=;i<s_mid.size();i++){
char c=s_mid[i];
if(c==' ') continue;
if(c<='' && c>=''){
while(i<s_mid.size() && s_mid[i]<=''&&s_mid[i]>=''){
c=s_mid[i];
s_re.push_back(c);
i++;
}
s_re.push_back(',');
i--;
continue;
}
if(s.empty()){
s.push(c);
}else{
while(!s.empty() && m[s.top()]>=m[c]){
s_re.push_back(s.top());
s.pop();
}
s.push(c);
}
}
while(!s.empty()){
s_re.push_back(s.top());
s.pop();
}
//cout<<s_re<<endl;//输出逆波兰表达式
//逆波兰表达式求值;
stack<int> res;
for(int i=;i<s_re.size();i++){
char c=s_re[i];
if(c==' ') continue;
if(c<='' && c>=''){
int num=;
while(i<s_re.size() && s_re[i]!=','){
c=s_re[i];
num=num*+(c-'');
i++;
}
res.push(num);
continue;
}
int a,b,sum=;
b=res.top();res.pop();
a=res.top();res.pop();
if(c=='+')
sum=a+b;
else if(c=='-')
sum=a-b;
else if(c=='*')
sum=a*b;
else if(c=='/')
sum=a/b;
res.push(sum);
}
return res.top();
}
};
leetcode227 基本计算器的更多相关文章
- [Swift]LeetCode227. 基本计算器 II | Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- LeetCode227:基本计算器II
感觉自己的思路还不错,比较简单清晰,代码量也比较少,没有用到记录运算符的变量或栈,就想把这个思路发一下博客. 题目: 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数 ...
- LeetCode 227. 基本计算器 II(Basic Calculator II)
227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...
- 1.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- 自己动手写计算器v1.1
这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...
- 自己动手写计算器v1.0
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...
- 【IOS开发笔记03-视图相关】简单计算器的实现
UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...
- [LeetCode] Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...
随机推荐
- 为SourceInsight添加多行注释功能菜单
由于项目看代码主要使用的是Source Insight,习惯了其他编辑器的多行注释功能,对此感到很不习惯,查询网上程序,可以自行添加. 1.打开project,选择base项目中的utils.em,添 ...
- 10 Zabbix4.4.1系统告警“Zabbix server is not running”
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Zabbix4.4.1系统告警“Zabbix server is not running” 第一步 ...
- MSSQL日期分组排序
等于今天日期的排上面,大于今天的排中间,小于今天的排下面,带分页.
- cmd拷贝文件夹时,处理提示
xcopy 若目标盘上不存在此子目录,而在目标盘的结束符又不以"\"为结束,则将提示: does destination specify a file name or direct ...
- zencart批量设置热卖商品 best seller、点击最高最受欢迎产品 most popular
zencart批量设置某分类下热卖商品数 best seller ; ,,,,,); zencart批量设置某产品点击最高最受欢迎产品 most popular ; ,,,,,);
- Centos安装nmap端口查看工具
CentOS安装nmap端口查看工具 一.安装nmap yum install nmap #输入y安装 二.使用nmap nmap localhost #查看主机当前开放的端口 ...
- keystonejs实战之页头页脚
前两篇介绍了入门相关知识及对keystonejs整体可用性评估,这篇介绍下开始实际运用中的页头页脚部分,因为马上项目忙了,这个先匆匆的作个收尾. 不管是用WordPress还是其他CMS系统,应用最宽 ...
- vue中的各种属性
data new vue({ data:{ 'a':1 } }) 是一个实例,data直接是一个对象 vue.component('my',{ template:'', props:['title'] ...
- Spring JdbcTemplate + transactionTemplate 简单示例 (零配置)
jdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTempla ...
- idea中使用JRebel插件
首先 等待下载 点击Restart idea (重启idea) 然后等待idea 进行激活 记得勾选下面的那个复选框 激活url:http://139.199.89.239:1008/88414687 ...