Menu
CoddyTech

Baseball Game

やさしいスタックpython iconjava iconcpp iconc iconjs icon+10

少し変わったゲームの得点を記録します。operationsを左から右へ読み、各項目に従って得点の記録を変更します。"7"や"-2"のような整数は、その得点を追加します。"+"は直近2つの得点の合計を追加し、"D"は直近の得点の2倍を追加し、"C"は直近の得点を完全に削除します。

最後の操作の後に記録に残っている得点の合計を返す、calPointsという名前の関数を書いてください。記録が空の場合、合計は0です。

関数

calPoints(operations: string-array) → integer
operationsstring-array
操作を順番に並べたもの:テキストとしての整数、または「+」、「D」、「C」
戻り値integer
最後に記録に残っているスコアの合計

制約

  • 1 ≤ operations.length ≤ 5000
  • 各エントリーは、"+"、"D"、"C"、または -3 × 104 ≤ value ≤ 3 × 104 の範囲で10進表記された整数です。
  • すべての操作は有効です。記録に少なくとも2つのスコアがある場合にのみ"+"が現れ、少なくとも1つある場合にのみ"D"と"C"が現れます。
  • 記録上のすべてのスコアと最終的な合計は、32 ビット符号付き整数に収まります。

例

入力
operations = ["4", "-2", "D", "+", "C", "7"]
出力
5
説明
記録には[4, -2]が追加され、"D"は-4を追加し、"+"は-2 + -4 = -6を追加し、"C"はその-6を削除し、最後に7が追加されます。記録[4, -2, -4, 7]の合計は5です。
challenge icon

発展問題

直近の"C"を取り消して、取り消されたスコアを戻す操作を、O(1)時間でどのように追加しますか?

コードをリセット
def calPoints(operations):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

operations = ["4", "-2", "D", "+", "C", "7"]

期待される出力

5