Brace pairing problem: http://acm.nyist.net/JudgeOnline/problem.php?pid=2
Ideas: The use of advanced after the nature of the stack, left character, the right character out.
#include <iostream>#include<string>#include<stack>using namespacestd;BOOLCheckstringstr) {Stack<Char>Stack; for(inti =0; I < str.length (); ++i) {if(Str[i] = ='('|| Str[i] = ='['|| Str[i] = ='{') Stack.push (Str[i]); //left character in stack Else if(Stack.empty ())//The pairing fails if there is no right character in the non-Zofu stack return false; Else if(! (Stack.top () = ='('&& Str[i] = =')'||//The top of the stack is not paired with the current symbol, pairing failsStack.top () = ='['&& Str[i] = =']'||stack.top ()=='{'&& Str[i] = ='}')) return false; ElseStack.pop (); //out of the stack, paired successfully } returnStack.empty ();//empty stack, paired successfully}intMain () {intn =0; CIN>>N; for(inti =0; I < n; ++i)//Multiple tests { stringstr; CIN>>str; cout<< (check (str)?)"Yes":"No") <<Endl; }}
ACM: Parentheses pairing issue