题目:
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
示例 1:
输入: "3+2*2"
输出: 7
示例 2:
输入: " 3/2 "
输出: 1
示例 3:
输入: " 3+5 / 2 "
输出: 5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/basic-calculator-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
答案:
时间:
10min
class Solution:
def calculate(self, s: str) -> int:
stack=[]
num=0
sign= "+"
record={"+","-","*","/"}
for i in range(len(s)):
word=s[i]
if word.isdigit():
num=num*10+int(word)
if word in record or i==len(s)-1:
if sign=="+":
stack.append(num)
elif sign=="-":
stack.append(-num)
elif sign=="*":
stack.append(stack.pop()*num)
else:
stack.append(int(stack.pop()/num))
num=0
sign=word
return reduce(lambda x,y:x+y,stack)
要点:
1. 就是栈和数字的更新
注意“14-3/2”这个例子,更新除法的时候是 -3//2 ,所以要写 int(stack.pop()/num) 而不是直接 //
其他:
代码报错:无
上一篇:两个栈实现中缀表达式
下一篇:单调栈