【java】224. 基本计算器---了解简单计算器!!!
发布日期:2021-05-07 02:21:59 浏览次数:26 分类:精选文章

本文共 1169 字,大约阅读时间需要 3 分钟。

实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。

示例 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 表示一个有效的表达式

代码:public int calculate(String s) {          //栈中存入两个元素,栈底放已经算出的结果,栈顶放与下个元素运算的符号,用1,-1表示        Stack
stack = new Stack
(); // sign 代表正负 int sign = 1, res = 0; int length = s.length(); for (int i = 0; i < length; i++) { char ch = s.charAt(i); if (Character.isDigit(ch)) { int cur = ch - '0'; while (i + 1 < length && Character.isDigit(s.charAt(i + 1))) cur = cur * 10 + s.charAt(++i) - '0'; res = res + sign * cur; } else if (ch == '+') { sign = 1; } else if (ch == '-') { sign = -1; } else if (ch == '(') { stack.push(res); res = 0; stack.push(sign); sign = 1; } else if (ch == ')') { res = stack.pop() * res + stack.pop(); } } return res; }
上一篇:【java】227. 基本计算器 II---思路简单,代码清晰!!!
下一篇:【java】1047. 删除字符串中的所有相邻重复项---调用函数O(N)解决问题!!!

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月02日 14时31分32秒