您的位置:首页 > 其它

*LeetCode-Basic Calculator II

2015-10-01 08:15 316 查看
这个题也是每次遇到符号的话计算前一次符号的计算 因为符号意味着这个num结束 所以每次sign要存起来 存成char 下次判断用

但是这个题是要把每个数字push进去 假如是乘除 算了这次再push 然后最后累加起来

其中注意最后一个位的时候也要做一遍是sign的 push最后一个数字进去

public class Solution {
public int calculate(String s) {
if ( s == null || s.length() == 0 )
return 0;
s = s.replaceAll("\\s","");
char sign = '+';
int num = 0;
int res = 0;
Stack <Integer> stack = new Stack<Integer>();
for ( int i = 0; i < s.length(); i ++ ) {
if ( Character.isDigit(s.charAt(i) )) {
num = 10 * num + s.charAt(i) -'0';
}
if ( !Character.isDigit(s.charAt(i) ) || i == s.length() - 1 ) {
if ( sign == '+' ){
stack.push(num);
}
else if ( sign == '-'){
stack.push(-num);
}
else if ( sign == '*'){
stack.push( stack.pop() * num );
}
else
stack.push( stack.pop() / num );
sign = s.charAt(i);
num = 0;
}
}
for ( int i : stack )
res += i;
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: