leetcode 224. Basic Calculator
来源:互联网 发布:js如何获取classname 编辑:程序博客网 时间:2024/05/16 08:35
224. 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.
class Solution {public: int calculate(string s) { stack<int> value; stack<char> fuhao; for (int i = 0; i < s.size(); i++) { if (s[i] == ' ') continue; else if (s[i] == '+' || s[i] == '-' || s[i] == '(') fuhao.push(s[i]); else if (s[i] >= '0' && s[i] <= '9') //压入数字 { int ii = i; while (s[ii] >= '0' && s[ii] <= '9') ii++; value.push( atoi(s.substr(i, ii - i).c_str()) ); i = ii - 1; } else if (s[i] == ')') //遇到')'需要处理了 { stack<int> value_temp; value_temp.push(value.top()); value.pop(); stack<char> fuhao_temp; while (fuhao.top() != '(') { value_temp.push(value.top()); value.pop(); fuhao_temp.push(fuhao.top()); fuhao.pop(); } fuhao.pop(); value.push(getvalue(value_temp, fuhao_temp)); } } stack<int> value_temp; //需要reverse栈,因为计算填入是反的。 while (!value.empty()) { value_temp.push(value.top()); value.pop(); } stack<char> fuhao_temp; while (!fuhao.empty()) { fuhao_temp.push(fuhao.top()); fuhao.pop(); } return getvalue(value_temp, fuhao_temp); } int getvalue(stack<int> &value, stack<char> &fuhao) { while (!fuhao.empty()) { int a = value.top(); value.pop(); int b = value.top(); value.pop(); if (fuhao.top() == '+') value.push(a + b); else value.push(a - b); fuhao.pop(); } return value.top(); }};
阅读全文
0 0
- [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 224.Basic Calculator
- LeetCode 224. Basic Calculator
- leetcode 224. Basic Calculator
- 【LeetCode】Basic Calculator && Basic Calculator II
- LeetCode - Basic Calculator & Basic Calculator II
- Leetcode之Basic Calculator & Basic Calculator II
- LeetCode 224. Basic Calculator(基本计算器)
- [leetcode] 224. Basic Calculator 解题报告
- "*"的运用
- 最新 Javascript练习基础
- 移动端媒介查询尺寸
- MySQL for Windows免安装版本配置
- layer.confirm快速双击会连续触发事件问题
- leetcode 224. Basic Calculator
- 开源许可证
- 关于MVP的小考虑以及MVVM
- java实现邮件发送报错javamail could not connect to smtp host
- linear-gradient是image属性
- 洗扑克牌(乱数排列)(c/python略)
- jsp页面接收到ajax发回来的data是个原页面的html解决
- Android Studio中各种jdk和sdk的类找不到,提示setup jdk
- CSS基本知识