看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~
谁能九层台,不用累土起!
题目
给你一个字符串表达式 s
,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1:
1 | 输入: s = "3+2*2" |
示例 2:
1 | 输入: s = " 3/2 " |
示例 3:
1 | 输入: s = " 3+5 / 2 " |
提示:
1 <= s.length <= 3 * 105
s
由整数和算符('+', '-', '*', '/')
组成,中间由一些空格隔开s
表示一个 有效表达式- 表达式中的所有整数都是非负整数,且在范围
[0, 231 - 1]
内- 题目数据保证答案是一个 32-bit 整数
解题思路
- 我们将所有的数以及运算符先找出来
- 用
m
标记当前的运算符 last
记录上次操作的数(例如1+2
我们就记录2
)- 对每种运算符进行对应操作
温馨提示
- 我在实现中对减法使用了加负数的方式,方便回溯
- 遇到乘法或者除法要对上次的加减法回溯时,我们有
sum-last+last本次的乘除操作
解题代码
1 | var calculate = function(s) { |
如有任何问题或建议,欢迎留言讨论!