实现一个基本的计算器来计算一个简单的字符串表达式的值。
    字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -非负整数和空格
    示例 1:

    1. 输入: "1 + 1"
    2. 输出: 2

    示例 2:

    输入: " 2-1 + 2 "
    输出: 3
    

    示例 3:

    输入: "(1+(4+5+2)-3)+(6+8)"
    输出: 23
    

    说明:

    • 你可以假设所给定的表达式都是有效的。
    • 不要使用内置的库函数 eval
    class Solution {
    public:
        int calculate(string s) {
            stack<int> sign;// 符号op
            sign.push(1);
            int ans = 0,num = 0,op = 1;
            for(char c:s){
                if(c==' ') continue;
                if('0'<=c && c<='9'){
                    num = num*10 + (c-'0');
                    continue;
                }
                ans += op*num;
                num = 0;
                if(c=='+'){
                    op = sign.top();
                }else if(c=='-'){
                    op = -sign.top();
                }else if(c=='('){
                    sign.push(op);
                }else if(c==')'){
                    sign.pop();
                }
            }
            ans += op*num;
            return ans;
        }
    };