LeetCode 227. 基本计算器 II(Basic Calculator II)
Posted hglibin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 227. 基本计算器 II(Basic Calculator II)相关的知识,希望对你有一定的参考价值。
227. 基本计算器 II
227. Basic Calculator II
题目描述
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和空格。整数除法仅保留整数部分。
LeetCode227. Basic Calculator II中等
示例?1:
输入: "3+2*2"
输出: 7
输出: 7
示例 2:
输入: " 3/2 "
输出: 1
输出: 1
示例 3:
输入: " 3+5 / 2 "
输出: 5
输出: 5
说明:
- 你可以假设所给定的表达式都是有效的。
- 请不要使用内置的库函数 eval。
Java 实现
import java.util.Stack;
class Solution
public int calculate(String s)
int len;
if (s == null || (len = s.length()) == 0)
return 0;
int num = 0;
char sign = '+';
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < len; i++)
if (Character.isDigit(s.charAt(i)))
num = num * 10 + s.charAt(i) - '0';
if (!Character.isDigit(s.charAt(i)) && ' ' != s.charAt(i) || i == len - 1)
if (sign == '+')
stack.push(num);
if (sign == '-')
stack.push(-num);
if (sign == '*')
stack.push(stack.pop() * num);
if (sign == '/')
stack.push(stack.pop() / num);
sign = s.charAt(i);
num = 0;
int res = 0;
for (int x : stack)
res += x;
return res;
相似题目
- 224. 基本计算器 Basic Calculator
- 282. 给表达式添加运算符 Expression Add Operators
- 772. 基本计算器 III Basic Calculator III
参考资料
- https://leetcode.com/problems/basic-calculator-ii/
- https://leetcode-cn.com/problems/basic-calculator-ii/
以上是关于LeetCode 227. 基本计算器 II(Basic Calculator II)的主要内容,如果未能解决你的问题,请参考以下文章