224Basic Calculator
来源:互联网 发布:自学音乐的软件 编辑:程序博客网 时间:2024/04/27 16:51
224 Basic Calculator
链接:https://leetcode.com/problems/basic-calculator/
问题描述:
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.
Hide Tags Stack Math
计算表达式,这一题是Basic Calculator II https://leetcode.com/problems/basic-calculator-ii/的简化版。
class Solution {public: int calculate(string s) { stack<int> num; stack<char> oper; string expression=""; for(int i=0;i<s.size();i++) {if(s[i]!=' ') expression+=s[i]; } int temp=0; for(int i=0;i<expression.length();i++) { if(expression[i]-'0'<10&&expression[i]-'0'>-1) temp=temp*10+expression[i]-'0'; else if(expression[i]=='(') oper.push(expression[i]); else { if(expression[i]=='*'||expression[i]=='/') { if(!oper.empty()&&(oper.top()=='*'||oper.top()=='/')) { switch(oper.top()) { case '*':temp=num.top()*temp;num.pop();oper.pop();break; case '/':temp=num.top()/temp;num.pop();oper.pop();break; default: break; } } num.push(temp); temp=0; oper.push(expression[i]); } else if(expression[i]=='+'||expression[i]=='-') { while(!oper.empty()&&(oper.top()=='+'||oper.top()=='-'||oper.top()=='*'||oper.top()=='/')) { switch(oper.top()) { case '*':temp=num.top()*temp;num.pop();oper.pop();break; case '/':temp=num.top()/temp;num.pop();oper.pop();break; case '+':temp=temp+num.top();num.pop();oper.pop();break; case '-':temp=num.top()-temp;num.pop();oper.pop();break; default: break; } } num.push(temp); temp=0; oper.push(expression[i]); } else if(expression[i]==')') { while(oper.top()!='(') { switch(oper.top()) { case '+':temp=temp+num.top();num.pop();break; case '-':temp=num.top()-temp;num.pop();break; case '*':temp=num.top()*temp;num.pop();break; case '/':temp=num.top()/temp;num.pop();break; default: break; } oper.pop(); } oper.pop(); } } } while(!oper.empty()) { switch(oper.top()) { case '+':temp=temp+num.top();num.pop();break; case '-':temp=num.top()-temp;num.pop();break; case '*':temp=num.top()*temp;num.pop();break; case '/':temp=num.top()/temp;num.pop();break; default: break; } oper.pop(); } return temp; }};
0 0
- Basic Calculator - LeetCode 224
- Leetcode 224: Basic Calculator
- leetcode 224 Basic Calculator
- 224Basic Calculator
- leetcode#224 Basic Calculator
- 224-m-Basic Calculator
- leetcode[224]:Basic Calculator
- LeetCode(224)Basic Calculator
- [LeetCode 224]Basic Calculator
- leetcode 224: Basic Calculator
- LeetCode 224 Basic Calculator
- Leetcode 224: Basic Calculator
- leetcode-224-Basic Calculator
- leetcode#224 Basic Calculator
- LeetCode.224 Basic Calculator
- LeetCode(224) Basic Calculator
- leetcode_c++:栈:Basic Calculator(224)
- LeetCode No.224 Basic Calculator
- 迭代相关介绍
- 2015070105 - EffactiveJava笔记 - 第48条 获取精确结果不用float或double(2)
- Xcode插件-快速文档注释
- 1019. 程序猿和产品狗
- java web 开发使用Log4J和SLF4J
- 224Basic Calculator
- 侧滑面板
- python抓价记(1)
- CentOS 6.5 SSH命令无法执行的问题的解决办法
- ZOJ Problem Set - 1151 Word Reversal
- Configure hexo(node,npm)
- 记几次JAVA系统故障问题定位过程
- Android视频录制命令screenrecord
- Html5学习笔记1 元素 标签 属性