問題概要
"+"と"-"から成る文字列がある。
"+"は数をインクリメントする命令で、-は数をデクリメントする命令。
ここから、連続でなくてもよい部分文字列をとって、X=0に対して実行する時、Xの範囲(=Xの最大-Xの最小)を最大化せよ
解説
"+"と"-"の数を数えて大きい方を答えるだけ。
範囲を最大化したいなら、ひたすら小さくするか、ひたすら大きくするかだけ
struct MaximumRange { int findMax(string s) { map<char, int> cnt; for (char c : s) cnt[c]++; return max(cnt['+'], cnt['-']); } };