![](https://www.dazhuanlan.com/webchat.jpg)
Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces .
Example
No.1
Input: “1 + 1”
Output: 2
No.2
Input: “ 2-1 + 2 “
Output: 3
No.3
Input: “(1+(4+5+2)-3)+(6+8)”
Output: 23
Note
- You may assume that the given expression is always valid.
- Do not use the eval built-in library function.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public int (String s) { Stack<Integer> stack = new Stack<>(); int result = 0; int num = 0; int sign = 1;
for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i);
if (Character.isDigit(ch)) { num = 10 * num + (ch - '0'); } else if (ch == '+' || ch == '-') { result += sign * num; num = 0; sign = ch == '+' ? 1 : -1; } else if (ch == '(') { stack.push(result); stack.push(sign); sign = 1; result = 0; } else if (ch == ')') { result += sign * num; num = 0; result *= stack.pop(); result += stack.pop(); } }
result += sign * num; return result; }
|
近期评论