-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBasic Calculator II
31 lines (31 loc) · 978 Bytes
/
Basic Calculator II
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution:
def calculate(self, s: str) -> int:
i = 0
cur = prev = res = 0
cur_oper = "+"
while i < len(s):
cur_char = s[i]
if cur_char.isdigit():
while i < len(s) and s[i].isdigit():
cur = cur * 10 + int(s[i])
i += 1
i -= 1
if cur_oper == "+":
res += cur
prev = cur
elif cur_oper == "-":
res -= cur
prev = -cur
elif cur_oper == "*":
res -= prev
res += prev * cur
prev = cur * prev
else:
res -= prev
res += int(prev / cur)
prev = int(prev / cur)
cur = 0
elif cur_char != " ":
cur_oper = cur_char
i += 1
return res