0
点赞
收藏
分享

微信扫一扫

【无标题】G - 基础数据结构——栈(1)

颜路在路上 2022-01-10 阅读 57
c语言

G - 基础数据结构——栈(1)

题目

给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

Input

输入数据有多组,每组数据不超过100个字符并含有( ,) ,[, ],{, }一个或多个。处理到文件结束。

Output

如果匹配就输出“yes”,不匹配输出“no”

Sample Input

sin(20+10)

{[}]

Sample Output

yes

no

代码

#include<stdio.h>
#include<string.h>
int main()
{
	int n,i,j,k;
	char s[105],c[105],ch;
	
	while(scanf("%c",&ch)!=EOF){
		j=0,k=0;
		gets(s);
		
		if(ch==')'||ch==']'||ch=='}'){
			printf("no\n");
			continue;
		}
		if(ch=='('||ch=='['||ch=='{'){
			c[j++]=ch;
		}
		n=strlen(s);
		for(i=0;i<n;i++){
			if(s[i]=='('||s[i]=='{'||s[i]=='[') c[j++]=s[i];
			
			if(s[i]==')'){
				k++;
				if(c[j-1]=='(') c[--j]='0',k--;
			}
			
			if(s[i]==']'||s[i]=='}'){
				k++;
				if(s[i]-2==c[j-1]) c[--j]='0',k--;
			}
			if(k!=0) break;
		}
		if(j==0&&k==0){
			printf("yes\n");
		}
		else printf("no\n");
	}
	
	return 0;
}
举报

相关推荐

0 条评论