227. Basic Calculator
Input:
"3+2*2"
Output: 7Input: " 3/2 "
Output:1Input:" 3+5 / 2 "
Output: 5Last updated
Was this helpful?
Input:
"3+2*2"
Output: 7Input: " 3/2 "
Output:1Input:" 3+5 / 2 "
Output: 5Last updated
Was this helpful?
Was this helpful?
class Solution {
public int calculate(String s) {
if(s == null || s.length() ==0) return 0;
int len = s.length();
Stack<Integer> stack = new Stack<Integer>();
int num = 0;
char sign= '+'; // equivalent to concatenate a '+' in front of s
for(int i = 0; i < len ; i++){
// operand
if (Character.isDigit(s.charAt(i)))
num = 10 * num + 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;
}
}
int ans = 0;
for (int i: stack) ans += i;
return ans;
}
}class Solution {
public:
int calculate(string s) {
istringstream in('+' + s + '+');
long long total = 0, term = 0, n;
char op;
while (in >> op) {
if (op == '+' or op == '-') {
total += term;
in >> term;
term *= op == '+' ? 1 : -1;
} else {
in >> n;
if (op == '*')
term *= n;
else
term /= n;
}
}
return total;
}
};