LeetCode() Basic Calculator 不知道哪里错了
class Solution {
public:
int calculate(string s) {
stack<int> num;
stack<char> symbol;
for(int i=0;i<s.length();i++){
if(s[i]==' ') continue;
else if(s[i]=='('||s[i]=='+'||s[i]=='-') symbol.push(s[i]);
else if(s[i]>='0'&&s[i]<='9'){
for(int j=i+1;j<s.length();j++){
if(s[j]<'0'||s[j]>'9'){
num.push(stoi(s.substr(i,j-i)));
i=j-1;
break;
}
}
}
else if(s[i]==')'){
stack<int> tem_i;
stack<char> tem_c;
while(symbol.top()!='('){
tem_i.push(num.top());
num.pop();
tem_c.push(symbol.top());
symbol.pop();
}
symbol.pop();
while(!tem_c.empty()){
char c=tem_c.top();
tem_c.pop();
if(c=='+'){
int a=tem_i.top();
tem_i.pop();
int b=tem_i.top();
tem_i.pop();
tem_i.push(a+b);
}
if(c=='-'){
int a=tem_i.top();
tem_i.pop();
int b=tem_i.top();
tem_i.pop();
tem_i.push(a-b);
}
}
num.push(tem_i.top());
tem_i.pop();
}
}
stack<int> tem_i;
stack<char> tem_c;
while(!symbol.empty()){
tem_i.push(num.top());
num.pop();
tem_c.push(symbol.top());
symbol.pop();
}
while(!tem_c.empty()){
char c=tem_c.top();
tem_c.pop();
if(c=='+'){
int a=tem_i.top();
tem_i.pop();
int b=tem_i.top();
tem_i.pop();
tem_i.push(a+b);
}
if(c=='-'){
int a=tem_i.top();
tem_i.pop();
int b=tem_i.top();
tem_i.pop();
tem_i.push(a-b);
}
}
return tem_i.top();
}
int stoi(string s){
int res=0;
for(int i=0;i<s.length();i++){
res=res*10+(s[i]-'0');
}
return res;
}
};
LeetCode() Basic Calculator 不知道哪里错了的更多相关文章
- [LeetCode] Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- [LeetCode] Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- LeetCode Basic Calculator II
原题链接在这里:https://leetcode.com/problems/basic-calculator-ii/ Implement a basic calculator to evaluate ...
- LeetCode Basic Calculator
原题链接在这里:https://leetcode.com/problems/basic-calculator/ Implement a basic calculator to evaluate a s ...
- [LeetCode] Basic Calculator III 基本计算器之三
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- [LeetCode] Basic Calculator IV 基本计算器之四
Given an expression such as expression = "e + 8 - a + 5" and an evaluation map such as {&q ...
- [LeetCode] Basic Calculator & Basic Calculator II
Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...
- LeetCode——Basic Calculator II
Description: Implement a basic calculator to evaluate a simple expression string. The expression str ...
- LeetCode——Basic Calculator
Description: Implement a basic calculator to evaluate a simple expression string. The expression str ...
随机推荐
- JS 跑马灯
利用jquery 来实现图片切换.文字转换移动的工具. MSClass 连接 http://www.popub.net/script/MSClass.html Mark 用
- Leetcode 给一个数a和一个向量b,找出该向量b中的2个数相加等于a,并输出这两个数在向量中的位置
看C++primer Plus看的无聊,第一次做Leetcode的练习,本来想做二维向量的,结果始终通不过,查了原因,必须用一维的... 一维的答案: class Solution { public ...
- win7 安装JDK7和JDK8后,卸载JDK8后出错
这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑. 本人win7 x64旗舰版,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java - ...
- IOS开发:监听来电状态的改变。
#import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> @property(nonato ...
- Integer Break(Difficulty: Easy)
题目: Given a positive integer n, break it into the sum of at least two positive integers and maximize ...
- 配置指定使用tcc编译器编译nim程序
1.前言 nim是什么? nim是一门静态编译型语言,语法类似python,nim的代码被翻译成C代码再被C编译器编译成可执行文件.因此nim的可执行文件比较小,性能应该也不错. 最简单的nim程序就 ...
- Meta http-equiv属性与HTTP头的Expires中(Cache-control)详解
一.概述 A.http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就 ...
- ios 大图 真机不显示的问题
png的图片只是命名为png,格式不是png的. 打开terminal终端,cd图片目录,输入命令sips -s format png *.* --out pngs,再把图片覆盖即可
- display:none与visibility:hidden区别
display:none与visibility:hidden有一个共同的作用是隐藏要显示的内容isplay:none 隐藏,但是不占空间 “看不见摸不到” 加载 display:none 隐藏,但是不 ...
- 【一套C语言控制台的输出框代码】
效果演示 可以生成一个输出框 首先 要创建输出框,设置输出框风格,可以设置的元素包括: 左上角符号,右上角符号,左下角符号,右下角符号,以及上下左右边界线符号,理论上,只要你电脑能显示的符号,都可以支 ...