問題
http://community.topcoder.com/stat?c=problem_statement&pm=10943&rd=14546
カッコの並びが与えられる。
カッコがきちんと閉じた形になるために、追加で必要なカッコの数を求める。
解き方
左カッコが出てきたら+1、右カッコが出てきたらー1としてカッコの閉じ具合を走査する。
0から始め、マイナスになるときは必ず左にカッコが必要なので答えを+1して数を0に戻す。
そうでない場合はそのまま走査し、最後に残った数を答えに足せばよい。
コード
class MissingParentheses {
public: int countCorrections(string par) {
int left=0,ans=0;
FORE(i,0,par.size()){
if(par[i]=='(')left++;
else if(left>0)left--;
else ans++;
}
return ans+left;
}
};