您的位置:首页 > 其它

leetcode.224. Basic Calculator

2016-05-10 18:29 239 查看
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) {
if(s.size() == 0)
return 0;

stack<int> stack;
int res = 0;
int sign = 1;
for(int i=0; i<s.size(); i++) {
if (isdigit(s[i]))
{
int cur = s[i]-'0';
while(i+1<s.size() && isdigit(s[i+1]))
cur = 10*cur + s[++i] - '0';

res += sign * cur;
}else if(s[i]=='-') {
sign = -1;
} else if(s[i]=='+') {
sign = 1;
} else if( s[i]=='(') {
stack.push(res);
res = 0;
stack.push(sign);
sign = 1;
} else if(s[i]==')') {
int num1 = stack.top(); stack.pop();
int num2 = stack.top(); stack.pop();

res = num1 * res + num2;

sign = 1;
}
}
return res;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: