PTA练习题:括号匹配

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

输入格式:

输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:

如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)
输出样例1:

yes
输入样例2:

{[}]
输出样例2:

no

#include<stdio.h>

int main()
{
	char s1[101];
	char s2[101];
	int index = 0;
	int cnt = 0;
	gets(s1);
	for(int i=0;s1[i] != '\0';i++)
	{
		if(s1[i] == '(' || s1[i] == '[' || s1[i] == '{')
		{
			s2[index++] = s1[i];	
		}
		else if(s1[i] == ')')
		{
			index--;
			if(index < 0 || s2[index] != '(')
			{
				cnt =1;
				break;
			}
		}
		else if(s1[i] == ']')
		{
			index--;
			if(index < 0 || s2[index] != '[')
			{
				cnt =1;
				break;
			}
		}
		else if(s1[i] == '}')
		{
			index--;
			if(index < 0 || s2[index] != '{')
			{
				cnt =1;
				break;
			}
		} 
	}
	if(cnt == 1 || index != 0)
	{
		printf("no");
	}
	else
	{
		printf("yes");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45735242/article/details/106157366