[682] 棒球比赛(22)

91 阅读1分钟

这个也比较简单,本来想着只定义一个变量 循环一遍来搞定,在C这个无效成绩这儿想的太简单了,最好还是借助一个数组,两边循环 image.png 正确代码如下

/**
 * @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…