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 ...
随机推荐
- leetcode 日记 4sum java
整体思路同之前的一样,依然采取降低维度的方式进行 public List<List<Integer>> solution(int nums[], int target) { L ...
- gdb调试报错记录
警告信息: incompatible implicit declaration of built-in function ‘strlen’ [enabled by default] 原因:未添加< ...
- liunx 下 部署并运行java项目(非web)
1. 将这三个包上传到liunx上,之后写一个run.sh 的脚本文件,然后在lib包中上传包<sunjce-provider.jar>包. 2.启动run.sh( ./run.sh st ...
- Beagleboard xm sd卡恢复
来源于:http://circuitco.com/support/index.php?title=BeagleBoard-xM windows下恢复更加简单,推荐windows系统下恢复. To in ...
- spring 源码
spring AOP的Advice(通知) Advice(通知)定义在连接点做什么,为切面增强提供织入接口. BeforeAdvice AfterAdvice ThrowsAdvice的设计,体现了A ...
- iShare.js分享插件
iShare.js是一个小巧的分享插件,纯JS编写,不依赖任何第三方库,使用简便. 为啥写这个插件? 因为在搭建个人blog时(还没有搭建好(¯﹃¯)),对目前国内比较受欢迎的分享插件都不太满意,主要 ...
- hadoop2的高可用性
1 hadoop2 namenode由一个节点变成两个节点,同时在线,且同时只有一个是活跃的,如果一个出了问题,另外一个立即接替:没必要配置Secondary NameNode.Checkpoi ...
- C语言状态机
转载声明 如果转载本博客内容,请联系869119842@qq.com,获得作者书面授权 前言 状态机的好处不用多说,自己百度去,但传统的编程模式,无论是C语言,或是硬件FPGA的Verilog都是采用 ...
- window 下如何安装ghost博客
1.安装nodejs # Node v0.12.x and v4.2+ LTS - supported 我本地安装的是4.2 安装其他版本可能提示系统不兼容 2.安装mysql 3.安装bower 4 ...
- [转载 ]POJ 1273 最大流模板
转载 百度文库花了5分下的 不过确实是自己需要的东西经典的最大流题POJ1273 ——其他练习题 POJ3436 . 题意描述: 现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给 ...