这个也比较简单,本来想着只定义一个变量 循环一遍来搞定,在C这个无效成绩这儿想的太简单了,最好还是借助一个数组,两边循环
正确代码如下
/**
* @param {string[]} ops
* @return {number}
*/
var calPoints = function (ops) {
let arr = [];
for (let i = 0; i < ops.length; i++) {
item = ops[i];
switch (item) {
case 'C':
// 这一步回退 判断不对 如果这一步的前一步不是分数的话
// 就还的处理, 这样比较麻烦,还是用需要借助一个数组
arr.pop();
break;
case '+':
arr.push(arr[arr.length - 1] + arr[arr.length - 2])
break;
case 'D':
arr.push(2 * arr[arr.length - 1])
break;
default:
arr.push(Number(item))
break;
}
}
return arr.reduce((pre, cur) => pre + cur);
};
这里reduce重温一下 推荐一遍文章
reduce详解 www.jianshu.com/p/e375ba1cf…