leetcode: Basic Calculator

来源:互联网 发布:天天向上网络版权费 编辑:程序博客网 时间:2024/06/06 00:49

Implement a basic calculator to evaluate a simple expression string.

The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces.

You may assume that the given expression is always valid.

Some examples:

"1 + 1" = 2" 2-1 + 2 " = 3"(1+(4+5+2)-3)+(6+8)" = 23

Note: Do not use the eval built-in library function. 


class Solution {public:    int calculate(string s) {                stack<int> signs;                int lastSign = 1;        int curNum = 0;        int retSum = 0;                for (auto c: s)        {            if (c == '(')            {                signs.push(lastSign);//进栈主要用在有括号的情况,如果没有括号,就不需要有栈            }            else if (c == ')')            {                signs.pop();            }            else if (c >= '0' && c <= '9')            {                curNum = curNum * 10 + (c-'0');            }            else if (c == '+' || c == '-')            {                retSum = retSum + lastSign * curNum;                lastSign = (c == '+'? 1:-1);                if (signs.size() > 0)                    lastSign = lastSign * signs.top();                curNum = 0;            }        }                return retSum + lastSign * curNum;    }};


0 0
原创粉丝点击