日常杂记python 初中高合集测试工程师

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 += sign
num
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 += sign
num
return res

作者:vigilant-7amportprg
链接:https://leetcode-cn.com/problems/basic-calculator/solution/jian-dan-de-ji-suan-qi-shi-xian-by-vigil-qyp0/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读