leetcode-224 简单计算器
2021-05-24 本文已影响0人
秸秆混凝烧结工程师
题目:https://leetcode-cn.com/problems/basic-calculator/
要求:
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
示例 1:
输入:s = "1 + 1"
输出:2
示例 2:
输入:s = " 2-1 + 2 "
输出:3
示例 3:
输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23
提示:
1 <= s.length <= 3 * 105
s 由数字、'+'、'-'、'('、')'、和 ' ' 组成
s 表示一个有效的表达式
Related Topics 栈 数学
👍 568 👎 0
leetcode submit region begin(Prohibit modification and deletion)
class Solution:
def calculate(self, s: str) -> int:
leetcode submit region end(Prohibit modification and deletion)
class Solution:
def calculate(self, s):
res, num, sign = 0, 0, 1 #res最终计算结果,num当前数字,sign表示符号+-
stack = []
for x in s:
if x.isdigit():
num = 10num +int(x)
elif x=="+" or x=="-":
res += signnum
num =0 #计算归零
sign=1 if x =="+" else -1
elif x =="(":
stack.append(res)
res =0 # 入栈归零
stack.append(sign)
sign =1
elif x ==")":
res+= num*sign#计算括号内的
num=0
res = stack.pop() #出栈先出符号
res += stack.pop() #计算括号外的和
res += signnum
return res
作者:vigilant-7amportprg
链接:https://leetcode-cn.com/problems/basic-calculator/solution/jian-dan-de-ji-suan-qi-shi-xian-by-vigil-qyp0/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。