NYOJ2(括号匹配)

简介: #include int main() { int z; scanf("%d",&z); while(z--) { char ch,s[10001]; int top=-1; while((ch=getchar())!='\n')//中间没有空格 {...
#include <stdio.h>
int main()
{
	int z;
	scanf("%d",&z);
	while(z--)
	{
		char ch,s[10001];
		int top=-1;
		while((ch=getchar())!='\n')//中间没有空格
		{
			if(ch==')' && top>=0 && s[top]=='(')//top>=0表明栈不空
				top--;
			else 
				if(ch==']' && top>=0 && s[top]=='[')
					top--;
				else 
					s[++top]=ch;
	}
		if(top==-1)
			puts("Yes");
		else
			puts("No");
	}
	return 0;
} 
//左括号的话入栈,右括号的话要么与栈顶配对要么错误 ,开始结束时栈要为空

 

#include<stdio.h>
#include<string.h>
char str[10001];
int main()
{
	int i,j,T;int top=-1,len;
	scanf("%d%*c",&T);
	while(T--)
	{
		top=0;
		memset(str,0,sizeof(str));
		scanf("%s",str);
		len=strlen(str);
		for(i=1;i<len;i++)
		{
			if(str[i]==')'&&str[top]=='('&&top!=-1)
				top--;
			else if(str[i]==']'&&str[top]=='['&&top!=-1)
				top--;
			else
				str[++top]=str[i];
		//	printf("%d     %d\n",i,top);
		}
		if(top==-1)
			puts("Yes");
		else
			puts("No");
		
	}
	return 0;
}

 

 

目录
相关文章
|
7月前
字符串括号匹配
字符串括号匹配
代码随想录Day9 栈与队列 LeetCodeT20 有效的括号 T1047 删除字符串中所有相邻重复项 T150 逆波兰表达式求值
代码随想录Day9 栈与队列 LeetCodeT20 有效的括号 T1047 删除字符串中所有相邻重复项 T150 逆波兰表达式求值
33 0
|
7月前
括号匹配问题
括号匹配问题
44 1
|
6月前
|
C++
【洛谷 P1739】表达式括号匹配 题解(栈)
该编程题目要求检查给定的包含字母、运算符和括号的表达式是否括号匹配。输入为一行表达式,以`@`结束。如果括号匹配,输出`YES`,否则输出`NO`。样例包括一个匹配和一个不匹配的表达式。解决方案是使用栈,遇到左括号入栈,遇到右括号时判断栈是否为空,栈空则输出`NO`,否则出栈。当读到`@`时,栈空则输出`YES`,否则输出`NO`。提供的AC代码使用C++实现,通过`stack`处理括号匹配。
83 0
|
7月前
|
索引
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
61 0
|
7月前
leetcode代码记录(逆波兰表达式求值
leetcode代码记录(逆波兰表达式求值
42 0
|
存储 测试技术
带你一步实现《栈》(括号匹配问题)
带你一步实现《栈》(括号匹配问题)
49 0
|
算法
栈在括号匹配中的应用
栈在括号匹配中的应用
|
算法
LeetCode:20. 有效的括号——栈和队列
题目描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。
LeetCode:20. 有效的括号——栈和队列
|
编译器
代码随想录刷题|LeetCode 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值(上)
代码随想录刷题|LeetCode 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值