227 基本计算器 II

本文最后更新于:2021年1月5日 晚上

实现一个基本的计算器来计算一个简单的字符串表达式的值。

字符串表达式仅包含非负整数,+-*/ 四种运算符和空格 。 整数除法仅保留整数部分。

示例 1:

1
2
输入: "3+2*2"
输出: 7

示例 2:

1
2
输入: " 3/2 "
输出: 1

示例 3:

1
2
输入: " 3+5 / 2 "
输出: 5

说明:

  • 你可以假设所给定的表达式都是有效的。
  • 不要使用内置的库函数 eval

Solution

参考:《算法小抄》4.7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# @lc code=start
class Solution:
def calculate(self, s: str) -> int:
stack = []
num = 0
sign ='+'
for i in range(len(s)):
c = s[i]
if c.isdigit():
num = 10*num + int(c)
if (not c.isdigit() and c != ' ') or i==len(s)-1:
if sign=='+':
stack.append(num)
elif sign=='-':
stack.append(-num)
elif sign=='*':
stack[-1] = stack[-1]*num
elif sign=='/':
stack[-1] = int(stack[-1]/float(num))
sign = c
num = 0
return sum(stack)
# @lc code=end

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!