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-negati ve integers and empty spaces
.
Assume that the given expression was always valid.
Some Examples:
"1 + 1" = 2 "2-1 + 2" = 3 "(1+ (4+5+2)-3) + (6+8)" = 23
Note:do not use the eval
built-in library function.
The code is as follows:
public class Solution {public int calculate (String s) { stack<integer>stack=new stack<integer> (); int ret=0; int num=0; int sign=1; for (int i=0;i<s.length (); i++) { char c=s.charat (i); if (Character.isdigit (c)) { num=10*num+c-' 0 '; } else if (c== ' + ') { ret+=sign*num; num=0; sign=1; } else if (c== '-') { ret+=sign*num; num=0; Sign=-1; } else if (c== ' (') { stack.push (ret); Stack.push (sign); Sign=1; ret=0; } else if (c== ') ') { ret+=sign*num; num=0; Ret*=stack.pop (); Ret+=stack.pop (); } } if (num!=0) ret+=sign*num; return ret; }}
Operation Result:
(medium) Leetcode 224.Basic Calculator