基本计算器II
力扣 227. 基本计算器 II
题目说明
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
-
1 <= s.length <= 3 * 105 -
s由整数和算符('+', '-', '*', '/')组成,中间由一些空格隔开 -
s表示一个 有效表达式 - 表达式中的所有整数都是非负整数,且在范围
[0, 231 - 1]内 - 题目数据保证答案是一个 32-bit 整数
示例
例1
1 | 输入:s = "3+2*2" |
例2
1 | 输入:s = " 3/2 " |
示例 3:
1 | 输入:s = " 3+5 / 2 " |
笔者理解
此题是一道字符串算法问题,在力扣题库中被定义为中等题。
解法
当笔者阅读完此题后,发现此题运用栈比较合适,当我们遍历到一个数时,就将其插入栈中(需要注意的是此题中可以会出现大于9的数,也就是不止一位数),然后因为此题只有四则运算,所以遇见乘除直接运算(将当前数与栈顶元素进行运算并置换即可),遇见减号将其取负放入栈,最后栈中只剩下多个数,累加输出即可让我们来看看具体如何实现的吧。
实现
1 | public int calculate(String s) { |
时间和空间效率都还行,可见此解法还比较适合此题;
总结
本题是今天的每日一题,难度是为中等,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!







