Parentheses Balance |
You are given a string consisting of parentheses () and []. A string of this type is said to be correct:
Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.
3 ([]) (([()]))) ([()[]()])()
Yes No Yes
括号匹配问题,唯一要注意的地方就是:输入的行中间可能有空格
代码:
#include <iostream> #include <stack> #include <string> using namespace std; int main() { int case_num; cin>>case_num; cin.ignore(); while(case_num--){ string seq; getline(cin,seq); stack<char> stk; bool flag=true; for(size_t i=0;i<seq.size();++i){ if(seq[i]=='(' || seq[i]=='[') stk.push(seq[i]); else if(seq[i]==')') { if(stk.empty()){ flag=false; break; } char ch=stk.top(); stk.pop(); if(ch!='('){ flag=false; break; } } else if(seq[i]==']') { if(stk.empty()){ flag=false; break; } char ch=stk.top(); stk.pop(); if(ch!='['){ flag=false; break; } } } if(!stk.empty()) flag=false; if(flag) cout<<"Yes"<<endl; else cout<<"No"<<endl; } }