[leetcode] 224. Basic Calculator

网友投稿 298 2022-08-26

[leetcode] 224. Basic Calculator

Description

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

Note:

You may assume that the given expression is always valid.Do not use the eval built-in library function.

分析

题目的大致意思是:实现一个加减运算,但是包含括号。这是一道栈的题目,就是一个栈的模拟过程,把+,-符号当成数的正负值,然后依次相加就行,遇见左括号就数字和操作符号分别入栈,遇见右括号就出栈计算如果不是很明白,这种题目,自己手工模拟一下就行了

代码

class Solution {public: int calculate(string s) { stack nums,ops; int num=0; int result=0; int sign=1; for(char c:s){ if(isdigit(c)){ num=num*10+c-'0'; }else{ result+=sign*num; num=0; switch(c){ case '+': sign=1; break; case '-': sign=-1; break; case '(': nums.push(result); ops.push(sign); result=0; sign=1; break; case ')': if(ops.size()>0){ result=ops.top()*result+nums.top(); nums.pop(); ops.pop(); } } } } result+=sign*num; return result; }};

参考文献

​​224. Basic Calculator​​

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

上一篇:这些数字化营销的痛点,就是盈利的起点 !(数字化营销最终要解决的问题)
下一篇:[leetcode] 667. Beautiful Arrangement II
相关文章

 发表评论

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