← All problems

224. Basic Calculator

HardOpen on LeetCodeProblem statement

Problem Statement

224. Basic Calculator

Hard


Given a string s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation.

Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as eval().

 

Example 1:

Input: s = "1 + 1"
Output: 2

Example 2:

Input: s = " 2-1 + 2 "
Output: 3

Example 3:

Input: s = "(1+(4+5+2)-3)+(6+8)"
Output: 23

 

Constraints:

C++

Source file
class Solution {
public:
    int calculate(string s) {
        stack<int> op({1});
        int total = 0, num = 0;
        int isPositive = 1;
        for (char c : s) {
            if (isdigit(c)) {
                num = num * 10 + (c - '0');
            } else {
                total += num * isPositive * op.top();
                num = 0;
                if (c == '+') isPositive = 1;
                if (c == '-') isPositive = -1;
                if (c == ')') op.pop();
                if (c == '(') {
                    op.push(op.top() * isPositive);
                    isPositive = 1;
                }
            }
        }
        total += num * isPositive * op.top();
        return total;
    }
};