给你一个字符串表达式s
,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1:
输入:s = "3+2*2"
输出:7
示例 2:
输入:s = " 3/2 "
输出:1
示例 3:
输入:s = " 3+5 / 2 "
输出:5
提示:
1 <= s.length <= 3*10^5
s
由整数和算符('+', '-', '*', '/')
组成,中间由一些空格隔开s
表示一个有效表达式- 表达式中的所有整数都是非负整数,且在范围
[0, 2^31-1]
内 - 题目数据保证答案是一个32位整数
1.队列
Python解答:
class Solution:
def calculate(self, s: str) -> int:
res = []
num = s[0]
i = 1
while i < len(s):
if s[i] == ' ':
i += 1
continue
elif s[i].isdigit():
num += s[i]
else:
res.append(int(num))
res.append(s[i])
num = ''
i += 1
else:
res.append(int(num))
first = []
i = 0
while i < len(res):
if res[i] == '*':
first[-1] *= res[i+1]
i += 2
elif res[i] == '/':
first[-1] //= res[i+1]
i += 2
else:
first.append(res[i])
i += 1
value = first[0]
i = 1
while i < len(first):
if first[i] == '+':
value += first[i+1]
i += 2
elif first[i] == '-':
value -= first[i+1]
i += 2
return value
留言