赞
踩
实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
示例 1:
输入: "1 + 1"
输出: 2
示例 2:
输入: " 2-1 + 2 "
输出: 3
示例 3:
输入: "(1+(4+5+2)-3)+(6+8)"
输出: 23
- class Solution {
- public int calculate(String s) {
- Stack<Integer> stack = new Stack<Integer>();
- // 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 < length - 1 && 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;
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。