您的位置:首页 > 其它

Leetcode: Basic Calculator

2015-12-19 06:12 260 查看
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


Notice:

1. 检查数,比如2位数,3位数

2. 用stack,遇到 '(' 就把之前的结果和符号push进stack, sign重置为1,sum重置为0. 遇到')'就把 当前结果*stack中的符号 再加上stack中之前的结果.

public class Solution {
public int calculate(String s) {
if (s==null || s.length()==0) return 0;
Stack<Integer> st = new Stack<Integer>();
int sum = 0;
int num = 0;
int sign = 1;
for (int i=0; i<s.length(); i++) {
char cur = s.charAt(i);
if (Character.isDigit(cur)) {
num = num*10 + (int)(cur-'0');
}
else if (cur == '+') {
sum += sign*num;
num = 0;
sign = 1;
}
else if (cur == '-') {
sum += sign*num;
num = 0;
sign = -1;
}
else if (cur == '(') {
st.push(sum);
st.push(sign);
sum = 0;
sign = 1;
}
else if (cur == ')') {
sum += sign*num;
num = 0;
sum *= st.pop();
sum += st.pop();
}

}
if (num != 0) sum += sign*num;
return sum;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: