题目:

  1. 实现一个基本的计算器来计算一个简单的字符串表达式的值。
  2. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 整数除法仅保留整数部分。
  3. 示例 1:
  4. 输入: "3+2*2"
  5. 输出: 7
  6. 示例 2:
  7. 输入: " 3/2 "
  8. 输出: 1
  9. 示例 3:
  10. 输入: " 3+5 / 2 "
  11. 输出: 5
  12. 来源:力扣(LeetCode
  13. 链接:https://leetcode-cn.com/problems/basic-calculator-ii
  14. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

答案:

时间:

10min

  1. class Solution:
  2. def calculate(self, s: str) -> int:
  3. stack=[]
  4. num=0
  5. sign= "+"
  6. record={"+","-","*","/"}
  7. for i in range(len(s)):
  8. word=s[i]
  9. if word.isdigit():
  10. num=num*10+int(word)
  11. if word in record or i==len(s)-1:
  12. if sign=="+":
  13. stack.append(num)
  14. elif sign=="-":
  15. stack.append(-num)
  16. elif sign=="*":
  17. stack.append(stack.pop()*num)
  18. else:
  19. stack.append(int(stack.pop()/num))
  20. num=0
  21. sign=word
  22. return reduce(lambda x,y:x+y,stack)

要点:

1. 就是栈和数字的更新

注意“14-3/2”这个例子,更新除法的时候是 -3//2 ,所以要写 int(stack.pop()/num) 而不是直接 //

其他:

代码报错:无