您的位置:首页 > Web前端 > JavaScript

[leetcode]224. Basic Calculator --JavaScript 代码

2016-08-12 15:50 429 查看
这道题的tag里写着stack呢,因此,就要考虑使用栈来完成题目。

这道题据说很经典,我在编写计算器的程序时,也遇到过类似的问题。

思路:

当没有遇到运算符的时候,就一直解析字符串中的数字,并将它们转化为真正的数字。如果遇到加号或者减号,就改变标志位,如果遇到括号,就借助栈来完成运算。遇到 “(” 入栈,遇到 “)” 出栈并计算结果。

/**
* @param {string} s
* @return {number}
*/
var calculate = function(s) {
var len = s.length;
if(len === 0){
return 0;
}
var stack = [];
var res = 0;
var sign = 1;
for(var i=0;i<len;i++){
var n = s.charAt(i);
if (!isNaN(parseInt(n))){
var cur = parseInt(n);
while(i+1<len && (!isNaN(parseInt(s.charAt(i+1))))){
cur = 10*cur + parseInt(s.charAt(++i));
}
res += sign * cur;
} else if (n=="-"){
sign = -1;
} else if (n=="+"){
sign = 1;
} else if (n=="("){
stack.push(res);
res = 0;
stack.push(sign);
sign = 1;
} else if (n==")"){
res = stack.pop() * res + stack.pop();
sign = 1;
}
}
return res;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode javascript