AOJ 1173 The Balance of the World
問題
括弧のバランスがとれているか判定。
解法
左括弧ならstackに入れ、右括弧ならstackから取り出す。
左括弧と右括弧の対応が違っていたり、左括弧が余っていたり、右括弧が多すぎたりすればNG
コード
bool solve(string str){ map<char, int> t; t['['] = 1; t[']'] = 1; t['('] = 2; t[')'] = 2; stack<char> stk; REP(i,str.size()){ if(str[i]=='['||str[i]=='('){ stk.push(t[str[i]]); }else if(str[i]==']'||str[i]==')'){ if(stk.empty()||stk.top()!=t[str[i]]) return false; else stk.pop(); } } return stk.empty(); } int main(){ string str; while(getline(cin,str)){ if(str==".") break; if(solve(str)) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; }