LeetCode-224. Basic Calculator

网友投稿 807 2022-10-03

LeetCode-224. Basic Calculator

LeetCode-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 .

Example 1:

Input: "1 + 1"Output: 2

Example 2:

Input: " 2-1 + 2 "Output: 3

Example 3:

Input: "(1+(4+5+2)-3)+(6+8)"Output: 23

题解:

标准解法就是后缀表达式求值,不贴了

讨论区神解法,每次进行单独运算如果遇到(就把数据和符号入栈,遇到)就把当前结果乘以栈顶元素(符号),加上栈底元素(前面所有的运算结果)。

class Solution {public: int calculate(string s) { stack st; int n = s.length(); int signal = 1; int res = 0; for (int i = 0; i < n; i++) { if (s[i] >= '0' && s[i] <= '9') { int num = s[i] - '0'; while (i + 1 < n && s[i + 1] >= '0' && s[i + 1] <= '9') { num *= 10; num += s[i + 1] - '0'; i++; } res += num * signal; } else if (s[i] == '+') { signal = 1; } else if (s[i] == '-') { signal = -1; } else if (s[i] == '(') { st.push(res); st.push(signal); res = 0; signal = 1; } else if (s[i] == ')') { res *= st-(); st.pop(); res += st-(); st.pop(); } } return res; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序与app的区别(小程序跟APP的区别)
下一篇:华为-输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~