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 ...
随机推荐
- powershell字符界面的,powershell加WPF界面的,2048游戏
------[序言]------ 1 2048游戏,有段时间很火,我在地铁上看有人玩过.没错,坐地铁很无聊,人家玩我就一直盯着看. 2 我在电脑上找了一个,试玩了以下,没几次格子就满了.我就气呼呼的放 ...
- hihoCoder#1039
刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在 ...
- Comparison method violates its general contract 关于jdk自带算法问题
昨晚上线,线上报了一个问题,用的jdk8,用的collections.sort方法, public static void main(String[] args) { List<Integer& ...
- 使用NSJSONSerialization将数组或字典转为字符串
IOS中将数组或字典转为字符串可以用NSJSONSerialization,代码如下: NSData* data = [NSJSONSerialization dataWithJSONObject:a ...
- linux下打包工具
InstallAnyWhere IzPack InstallJammer; installshield 也支持rpm打包 Advanced Installer
- oracle应用-表空间.用户名.权限
oracle 数据库应用 虽然代码少但是很实用! --01.表空间create tablespace tp_hrdatafile 'E:\tp_hr01.dbf' size 10M, 'E:\tp_t ...
- C语言程序设计第四次作业
态度决定一切,我依然要说这句话,每次同学们提交的作业,我都会认真评阅,相比实验课而言,可以有更充足的时间来发现问题,很多同学的代码依然会存在一些语法错误或者考虑不周全的现象,我提出了,那么,你认真看了 ...
- android 透明度
透明度百分比对应的十六进制: (说明:百分比计算出来会有小数,按照常规的四舍五入处理,详情请往下查看) 百分比:0% HEX: 00 百分比:1% HEX: 30 百分比:2% HEX: 50 百分比 ...
- META元素使用的简单学习
meta标签是我们学习html时容易忽略的标签,其实它的作用很大,下面就一些网上关于meta标签的讲解内容做一个简单的归纳. META标签共有两个属性,它们分别是Http-equiv属性和Name属性 ...
- npm(cnpm)介绍
1.npm(node package manager) nodejs的包管理器,用于node插件管理(安装.卸载.更新.管理依赖等); 2.使用npm安装安装插件: 1).命令提示符执行 npm in ...