Basic Calculator

来源:互联网 发布:react native和node.js 编辑:程序博客网 时间:2024/05/16 18:32

题目链接
So “(1+(4+5+2)-3)+(6+8)”

->

(1+(9+2)-3)+(6+8)

->

(1+11-3)+(6+8)

->

(12-3)+(6+8)

->

9+(6+8)

->

9+14

->

23
非常聪明的代码实现

class Solution {public:    int calculate(string s) {        int pos=0;        return evaluate(s,pos);    }    int evaluate(string& s, int& i) {        int res = 0;        bool negFlag=false;        while(i<s.size()&&s[i]!=')') {            if(s[i]=='+'||s[i]==' ')                 i++;            else if(s[i]=='-') {                i++;                negFlag=true;            }            else if(s[i]=='(') {                i++;                res+=negFlag?-evaluate(s,i):evaluate(s,i);                negFlag=false;            }            else {// numeric chars                int num=0;                while(i<s.size()&&isdigit(s[i]))                    num = num*10 + s[i++]-'0';                res+=negFlag?-num:num;                negFlag=false;            }        }        i++; // skip the current ')'        return res;    }};
0 0