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的更多相关文章

  1. leetcode 224. Basic Calculator 、227. Basic Calculator II

    这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...

  2. [LeetCode] 224. Basic Calculator 基本计算器

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  3. Java for LeetCode 224 Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  4. (medium)LeetCode 224.Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  5. [LeetCode] 227. Basic Calculator II 基本计算器 II

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

  6. 【LeetCode】224. Basic Calculator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...

  7. 【LeetCode】224. Basic Calculator

    Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...

  8. 【刷题-LeetCode】224. Basic Calculator

    Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...

  9. 224. Basic Calculator

    题目: Implement a basic calculator to evaluate a simple expression string. The expression string may c ...

随机推荐

  1. JavaScript属性(第三天)

    js语法非常灵活,这致使他非常好用,也造成它比较难掌握的地方: js中的值类型与引用类型在这里不做过多介绍,可以参照其他语言. js是可以动态添加属性的: var person={}; person. ...

  2. Dubbo的三种连接方式

    1.采用zookeeper作为注册中心 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...

  3. LG3211 [HNOI2011]XOR和路径

    题意 题目描述 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的"XOR 和"最大.该 ...

  4. Ubuntu 16下单机安装配置zookeeper和kafka

    网上其他的没有一个能直接照做完成的,我这个也是看了些帖子,整出来的怕以后忘记 建议连接工具:Bitvise SSH Client 一.安装配置zookeeper 下载zookeeper 3.4.13: ...

  5. 18.12 SDRAM和NAND FLASH区别

    处理器运行时要做大量的数据计算和交换,要求内存读写速度很快. NOR Flash读取快,写入慢,总线结构,能运行代码,价格贵. NAND Flash读取慢,写入快,非总线结构,不能运行代码,价格便宜. ...

  6. MAC基本操作

    1:软件的安装,卸载和破解 (1)mac上的软件包的安装可以去appstore或者是去第三方网站下载,下载下来的安装包一般是dmp,pkg,iso文件.最终安装之后生成的文件是app文件就可以使用.通 ...

  7. <ROS> NodeHandle句柄

    作者:jack_20 原文:https://blog.csdn.net/jack_20/article/details/70746736 1.句柄可以让你通过构造函数指定命名空间 ros::NodeH ...

  8. 分类问题的几个评价指标(Precision、Recall、F1-Score、Micro-F1、Macro-F1

    轉自 https://blog.csdn.net/sinat_28576553/article/details/80258619 四个基本概念TP.True Positive   真阳性:预测为正,实 ...

  9. Elisp 中变量赋值函数 set 与 setq 辨析

    在 Elisp 中,为变量赋值的函数有 set 与 setq,但是,两者存在很大的差异. 使用 set 赋值: 如果我们想为变量 flowers 赋值为一个 列表 '(rose violet dais ...

  10. Zabbix调优不完全指南(https://www.jianshu.com/p/2d911d55448f)

    从学习搭建zabbix到完成各类监控.调优.二次开发已经过去了两年,期间通过QQ学习群.zabbix官方社区.各个技术博客整理学习了不少关于各种报错的处理方法,现在将常见的一些报错处理方法整理出来分享 ...