Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers,,, +
-
*
, /
operators and empty spaces
. The integer division should truncate toward zero.
Assume that the given expression was always valid.
Some Examples:
"3+2*2" = 7 "3/2" = 1 "3+5/2" = 5
Operation with + 、-、 *,/.
With the last problem exhausted, with the stack do.
Public classSolution { Public intCalculate (String s) {Stack<String> stack =NewStack (); intStart = 0; intnum = 0; while(Start <s.length ()) { CharCH =S.charat (start); if(Character.isdigit (CH)) {num= num * + CH-' 0 '; } Else if(ch = = " ){ } Else { if(!stack.isempty () && (Stack.peek (). Equals ("*") | | stack.peek (). Equals ("/")) {String str=Stack.pop (); intnum2 =integer.valueof (Stack.pop ()); if(Str.equals ("*") ) {num= num2 *num; } Else{num= NUM2/num; }} stack.push (String.valueof (num)); Stack.push (string.valueof (ch)); Num= 0; } Start++; } if(!stack.isempty () && (Stack.peek (). Equals ("*") | | stack.peek (). Equals ("/")) {String str=Stack.pop (); intnum2 =integer.valueof (Stack.pop ()); if(Str.equals ("*") ) {num= num *num2; } Else{num= NUM2/num; } } if(!stack.isempty () && stack.pop (). Equals ("-") ) {num= -num; } while(Stack.size () > 1){ intNUM1 =integer.valueof (Stack.pop ()); if(Stack.pop (). Equals ("-") ) {NUM1= -NUM1; } num= num +NUM1; } if(!stack.isempty ())returnInteger.valueof (Stack.pop ()) +num; Else { returnnum; } }}
Public classSolution { Public intCalculate (String s) {intLen; if(s==NULL|| (len = s.length ()) ==0)return0; Stack<Integer> stack =NewStack<integer>(); intnum = 0; CharSign = ' + '; for(inti=0;i<len;i++){ if(Character.isdigit (S.charat (i))) {num= Num*10+s.charat (i)-' 0 '; } if((! Character.isdigit (S.charat (i)) && "!=s.charat (i)) | | I==len-1){ if(sign== '-') {Stack.push (-num); } if(sign== ' + ') {stack.push (num); } if(sign== ' * ') {Stack.push (Stack.pop ()*num); } if(sign== '/') {Stack.push (Stack.pop ()/num); } Sign=S.charat (i); Num= 0; } } intRe = 0; for(inti:stack) {Re+=i; } returnre;}}
Leetcode 227. Basic Calculator II----------java