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 ...
随机推荐
- 用PowerMock spy mock private方法
在实际的工作中,经常碰到只需要mock一个类的一部分方法,这时候可以用spy来实现. 被测类: public class EmployeeService { public boolean exist( ...
- webdriver无法打开firefox
1.执行webdriver.firefox()报错,提示: WebDriverException: Message: "Can't load the profile. Profile Dir ...
- VMware下利用ubuntu13.04建立嵌入式开发环境之二
之前在VMware中安装完Ubuntu系统,接下来开始设置开发中用到的服务和工具,以及系统设计. 1.安装VMware工具:打开VMware软件,在菜单->VM->Install VMwa ...
- svn回滚版本
1.本地修改了内容,但是没有commit可以通过Revert-来覆盖当前版本. 2.已经commit了.首先第一步,应该知道需要回滚的版本编号, 第二步,选择 updata to revision
- C++程序内存泄漏检测方法
一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成“统一”的标准.而在W ...
- 可滑动的ExpandableListView
可以向左滑动的扩展列表 向左滑动源码是参照GitHub上的里的 ListView的思路写出来的,按照他的思路,由于本人水平有限,只写了关键代码,能够完美运行,adapter改变之后能自动收回. 滑出状 ...
- taginput ,complete使用笔记
页面用到自动完成功能及需要taginput控件去展示,查资料的过程中发现 有两个类似的jQuery类库,到现在我也没搞明白它们两个有啥关联,jquery.tagsinput.js和bootstrap- ...
- ASIHTTPRequest中数据压缩问题与gzip
出现了类似问题,先mark,以后修改 最近使用asi发现,部分网络回调数据不能正常的json解析,将responseHeaders头打印出来,才发现公司服务器部分数据添加了gzip压缩传输. 最近简单 ...
- 安卓--Toast
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWind ...
- jquery中的DOM事件绑定与解绑
在jquery事件中有时候有的事件只需要在绑定后有效触发一次,当通过e.target判断触发条件有效触发后解除绑定事件,来避免多次无效触发和与未知情况造成冲突. 这时候就要用到了jquery中的事件绑 ...