您的位置:首页 > 其它

leetcode: Basic Calculator

2016-02-13 11:06 363 查看
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: