一日一练:棒球比赛

95 阅读1分钟

棒球比赛得分记录

因为涉及到数据的保存,同时也需要快速获取上两次的数据,可以用数组对栈进行模拟。

  • C: 直接将栈顶推出
  • D: 获取栈顶的值,double之后推入栈中
  • +: 获取栈顶和栈次顶的值,相加之后推入栈中
  • 其他情况: 转成整数放入栈中
function calPoints(ops: string[]): number {
  const stack: number[] = []
  for (let i = 0; i < ops.length; i++) {
    switch (ops[i]) {
      case 'C':
        stack.pop()
        break
      case 'D':
        stack.push(stack[stack.length - 1] * 2)
        break
      case '+':
        stack.push(stack[stack.length - 1] + stack[stack.length - 2])
        break
      default:
        stack.push(+ops[i])
    }
  }
  return stack.reduce((a, b) => a + b, 0)
}