#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std ;
const int MAXN = 10005 ;
char str[MAXN] ;
bool flag ;
void judge ()
{
int i ;
int len ;
char ch ;
stack <char> Q ;
len = strlen (str) ;
for (int i = 0; i < len; i ++)
{
if (Q.empty())
{
Q.push (str[i]) ;
continue ;
}
if (str[i] == '[' || str[i] == '(')
Q.push (str[i]) ;
else
{
if (str[i] == ']')
{
ch = Q.top () ;
Q.pop () ;
if (ch != '[')
{
flag = false ;
return ;
}
}
else
{
ch = Q.top () ;
Q.pop () ;
if (ch != '(')
{
flag = false ;
return ;
}
}
}
}
if (!Q.empty ()) // 如果此时栈中还有元素,肯定不匹配
{
flag = false ;
Q.pop () ;
}
return ;
}
int main()
{
int tcase ;
scanf ("%d", &tcase) ;
while (tcase --)
{
scanf ("%s", str) ;
flag = true ;
judge () ;
if (flag)
printf ("Yes\n") ;
else
printf ("No\n") ;
memset (str, '\0', sizeof(str)) ;
}
return 0 ;
}
NYOJ 2 括号配对问题 数据结构栈的应用
最新推荐文章于 2019-04-25 14:41:00 发布
本文介绍了一个使用栈实现的括号匹配算法,该算法能够判断字符串中的括号是否正确配对,包括圆括号和方括号。通过遍历输入字符串,并利用栈的数据结构特性来跟踪并验证括号的正确闭合顺序。
612

被折叠的 条评论
为什么被折叠?



