[leetcode]224. Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces . You may assume that the given expression is always valid. Some examples:
"1 + 1" = 2
" 2-1 + 2 " = 3
"(1+(4+5+2)-3)+(6+8)" = 23
Note: Do not use the eval built-in library function.
题目说模仿一个计算器,做加减法,不过要注意括弧跟空格,空格就直接跳吧然后其他的保存下来,用栈分别存储数字括弧跟运算符,每遇到一个”)“就弹栈运算,数字跟括弧放一起,不过其实这样不太好,因为得为括弧设定一个特定的数,因为这个WA了一次。
class Solution {
public:
stack<int> s_num;
stack<char> fuhao;
int count_f=0;
void cal_sub(){
if(s_num.size()<2)
return;
stack<int> nums;
stack<char> cal;
int b=s_num.top();
s_num.pop();
nums.push(b);
int a=s_num.top();
s_num.pop();
char c;
while(a!=-11111111){
c=fuhao.top();
fuhao.pop(); nums.push(a);
cal.push(c);
if(s_num.size()>0){
a=s_num.top();
s_num.pop();
}
else
a=-11111111;
}
count_f--;
a=nums.top();
nums.pop();
while(nums.size()>0){
b=nums.top();
nums.pop();
c=cal.top();
cal.pop();
if(c=='+')
a=a+b;
if(c=='-')
a=a-b;
}
s_num.push(a); }
int string2num(string s){
string c_num;
for(int i=0;i<s.size();i++){
if(s[i]=='('){
s_num.push(-11111111);
count_f++;
}
if(s[i]>='' && s[i]<='')
c_num+=s[i];
if(s[i]==')') {
if(c_num!="")
s_num.push(atoi(c_num.c_str()));
c_num="";
cal_sub();
}
if(s[i]=='+' || s[i]=='-') {
if(c_num!="")
s_num.push(atoi(c_num.c_str()));
c_num="";
fuhao.push(s[i]);
}
}
if(c_num!="")
s_num.push(atoi(c_num.c_str()));
cal_sub();
return s_num.top();
}
int calculate(string s) {
return string2num(s);
}
};
[leetcode]224. Basic Calculator的更多相关文章
- leetcode 224. Basic Calculator 、227. Basic Calculator II
这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...
- [LeetCode] 224. Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- Java for LeetCode 224 Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- (medium)LeetCode 224.Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- [LeetCode] 227. Basic Calculator II 基本计算器 II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- 【LeetCode】224. Basic Calculator 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...
- 【LeetCode】224. Basic Calculator
Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...
- 【刷题-LeetCode】224. Basic Calculator
Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...
- 224. Basic Calculator
题目: Implement a basic calculator to evaluate a simple expression string. The expression string may c ...
随机推荐
- SOFARPC —— Generic Service (泛化调用) 解析
今晚心情无比激动,多云转晴!原因在于弄懂些 Generic Service 实现原理,很有成就感. 各位看官莫笑,今晚,小小的收获,也是非常满足的.下面进入正题! 一.前言 普遍RPC在客户端需要提供 ...
- pip安装报错 解决办法
安装库时报错:Could not fetch URL https://pypi.python.org/simple/wheel/: 解决办法: pip --trusted-host pypi.pyt ...
- docker下搭建fastfds
https://blog.csdn.net/weixin_40247263/article/details/81087726 搭建过程参考 作者 https://me.csdn.net/feng_qi ...
- VLC播放器
为了将多个视频放在一个窗口,最开始想用的是windows media player ,6个视频,把整个电脑卡得不动了(显卡太弱,是多输出口的,没法换),于是又想把视频压缩成一个,网上的大部分软件要收费 ...
- windows 时间服务器配置详解
最近发现公司的服务器时间一直不准确,也无法和外部时间源进行同步.公司是域环境,按理说客户端PC应该自动和域控AD进行时间同步,但是PC机时间老是不能同步,不是慢了就是快了,就是和域控时间不一致.其它服 ...
- 定时任务模块 schedule
# coding:utf-8 from learning_python.Telegram_push.check_hardware import check_cpu import schedule im ...
- DDS生成正弦波
DDS生成正弦波 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////// ...
- 记录一次mongodb因网络问题导致shard节点异常
现象: 机房反馈9点左右,机房交换机故障,导致网络出现问题 业务人员反馈某个接口超时 初查:通过业务日志查看分析发现,在连接mongo的某个collections时候,报错错误如下: 在写入数据的时候 ...
- 去freessl.org申请免费ssl服务器证书
去freessl.org申请免费ssl服务器证书 来源: 本文链接 来自osnosn的博客 写于: 2019-03-30. 想搞个自签名证书,可以参考这篇: 用openssl为WEB服务器生成证书(自 ...
- global的使用
对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global. 相反,如果你对其赋了值的话,那么你就需要声明global.声明global ...