当前位置:网站首页>LeetCode_栈_困难_227.基本计算器(不含乘除)
LeetCode_栈_困难_227.基本计算器(不含乘除)
2022-07-01 02:45:00 【一瓢江湖我沉浮】
1.题目
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。
示例 1:
输入:s = “1 + 1”
输出:2
示例 2:
输入:s = " 2-1 + 2 "
输出:3
示例 3:
输入:s = “(1+(4+5+2)-3)+(6+8)”
输出:23
提示:
1 <= s.length <= 3 * 105
s 由数字、‘+’、‘-’、‘(’、‘)’、和 ’ ’ 组成
s 表示一个有效的表达式
‘+’ 不能用作一元运算(例如,“+1” 和 “+(2 + 3)” 无效)
‘-’ 可以用作一元运算(即 “-1” 和 “-(2 + 3)” 是有效的)
输入中不存在两个连续的操作符
每个数字和运行的计算将适合于一个有符号的 32 位整数
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/basic-calculator
2.思路
(1)栈
思路参考本题官方题解。
3.代码实现(Java)
//思路1————栈
class Solution {
public static int calculate(String s) {
int res = 0;
int length = s.length();
//sign 记录每个数之前的符号,对于表达式中的第一个数,默认其符号为 '+',即用 1 表示
int sign = 1;
Stack<Integer> opsStack = new Stack<>();
opsStack.push(1);
for (int i = 0; i < length; ) {
switch (s.charAt(i)) {
case ' ':
//遇到空格时直接跳过
i++;
break;
case '+':
sign = opsStack.peek();
i++;
break;
case '-':
sign = -opsStack.peek();
i++;
break;
case '(':
opsStack.push(sign);
i++;
break;
case ')':
opsStack.pop();
i++;
break;
default:
//表示遍历表达式时遇到的每一个数
int num = 0;
while (i < length && Character.isDigit(s.charAt(i))) {
num = num * 10 + (s.charAt(i) - '0');
i++;
}
res += sign * num;
break;
}
}
return res;
}
}
边栏推荐
- Restcloud ETL practice data row column conversion
- Mouse over effect 9
- 基于Pytorch完整的训练一个神经网络并进行验证
- Viewing JVM parameters
- Mouse over effect V
- Is it safe to open a stock account? Shanghai stock account opening procedures.
- servlet【初识】
- Use ipmitool to configure BMC network and user information of X86 server
- robots. Txt restrict search engine inclusion
- 鼠标悬停效果一
猜你喜欢

联想X86服务器重启管理控制器(XClarity Controller)或TSM的方法

Pulsar geo replication/ disaster recovery / regional replication

Pychart software deployment gray unable to point

Small program cloud development -- wechat official account article collection

RestCloud ETL WebService数据同步到本地

Share Creators萌芽人才培养计划来了!

园区运营效率提升,小程序容器技术加速应用平台化管理

Image preloading in JS

servlet【初识】

pycharm 软件deployment 灰色 无法点
随机推荐
Mnasnet learning notes
Big orange crazy blog move notice
Proxy support and SNI routing of pulsar
What are the top ten securities companies? In addition, is it safe to open an account online now?
nacos配置中心使用教程
DenseNet网络论文学习笔记
Is it safe to open a stock account? Shanghai stock account opening procedures.
lavaweb【初识后续问题的解决】
手机上怎么开户?还有,在线开户安全么?
【微信小程序开发】样式汇总
Borrowing constructor inheritance and composite inheritance
如果在小券商办理网上开户安全吗?我的资金会不会不安全?
VirtualBox installation enhancements
Restcloud ETL实践之数据行列转换
Share Creators萌芽人才培養計劃來了!
How to add a condition for an associated table in an SQL statement [null value required or not required]
522. Longest special sequence II
Sampling Area Lights
js防抖和节流
Mouse over effect VI