Description:
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
Note: don't use the eval
built-in library function.
Handles data and operators with two stack of operations. Calculate * and/Then add and subtract and then calculate sequentially.
public class Solution {public static int calculate (String s) {stack<integer> num = new stack<> (); Stack<character> op = new stack<> (); Op.push (' + '); int n = s.length (); if (n < 1) return 0; for (int i=0; i<n;) {if (S.charat (i) = = ") {i + +; } else if (IsOp (S.charat (i))) {Op.push (S.charat (i)); i + +; } else {int temp = 0; while (I < n && isdigit (S.charat (i))) {temp = temp * 10; Temp + = S.charat (i)-' 0 '; i + +; } if (!op.empty () && (op.peek () = = ' * ' | | op.peek () = = '/')) {if (Op.peek () = = ' * ') {temp *= num. Pop (); Op.pop (); } else {temp = Num.pop ()/temp; Op.pop (); }} num.push (temp); }} int res = 0; while (!op.empty ()) {int temp = Num.peek (); SYSTEM.OUT.PRINTLN (temp); if (op.peek () = = '-') temp =-temp; res + = temp; Num.pop (); Op.pop (); } return res; }public Static Boolean isOp (char c) {if (c = = ' + ' | | c = = '-' | | c = = ' * ' | | c = = '/') {return true;} else {return false;}} public static Boolean isdigit (char c) {if (c >= ' 0 ' && C <= ' 9 ') {return true;} else {return false;}}}
Leetcode--basic Calculator II