Brackets! Brackets! | ||||||
|
||||||
Description | ||||||
There are six kinds of brackets: ‘(‘, ‘)’, ‘[‘, ‘]’, ‘{’, ‘}’. dccmx’s girl friend is now learning java programming language, and got mad with brackets! Now give you a string of brackets. Is it valid? For example: “(([{}]))” is valid, but “([)]” is not. |
||||||
Input | ||||||
First line contains an integer T (T<=10): the number of test case. Next T lines, each contains a string: the input expression consists of brackets. The length of a string is between 1 and 100. |
||||||
Output | ||||||
For each test case, output “Valid” in one line if the expression is valid, or “Invalid” if not. |
||||||
Sample Input | ||||||
2 {{[[(())]]}} ({[}]) |
||||||
Sample Output | ||||||
Valid Invalid 注意()()这种情况合法。()())这种情况会令flag==0;()(这种情况会令栈为空。
如果出现一个右括号,那么在栈非空的情况下,如果合法必然栈顶元素和这个右括号相匹配。那么在这两个条件都不能满足的条件下flag==0; #include<iostream> #include<string.h> #include<stack> using namespace std; int main() { int T;char gq[101]; cin>>T; while(T--) { stack<char>ls; scanf("%s",&gq); int flag=1; for(int i=0;i<strlen(gq);i++) { if(gq[i]=='('||gq[i]=='{'||gq[i]=='[') ls.push(gq[i]); else { if(gq[i]==')') { if(!ls.empty()&&ls.top()=='(') { ls.pop(); } else { flag=0; break; } } else if(gq[i]=='}') { if(!ls.empty()&&ls.top()=='{') { ls.pop(); } else { flag=0; break; } } else if(gq[i]==']') { if(!ls.empty()&&ls.top()=='[') { ls.pop(); } else { flag=0; break; } } } } if(!ls.empty()||flag==0) cout<<"Invalid"<<endl; else cout<<"Valid"<<endl; } return 0; } |
时间: 2024-11-25 20:10:05