問題概要

+-からなる命令$s$が与えられる. 最初, 数$X$は$0$であり, +を実行すると$X$の値が$+1$, -を実行すると$-1$される.

全体の実行を通しての$X$の動く範囲を最大化するような命令$s$の部分文字列(連続でなくてよい)を考え, そのときの範囲を求めなさい.

制約

  • $1 \leq |s| \leq 2500$
  • $s$は+-からなる

考察

+をしたあとに-をするのは無駄. 正か負のどちらかに偏らせればどちらかが最適.

提出コード(Python3🐍)

class MaximumRange:
    def findMax(self, s):
        return max(s.count(c) for c in '+-')