7-3 括号匹配 (25 分)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41611106/article/details/83002075

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

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

如果括号配对,输出yes,否则输出no。
输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no

#include<stdio.h>
#include<map>
#include<iostream>
#include<stack>
#include <algorithm>
using namespace std;
int main()
{
	string s;
	getline(cin,s);
	int len=s.size();
	map<char,char> m;
	m['(']=')';
	m['{']='}';
	m['[']=']';
	stack <char> a;
	int flag=1;
	for(int i=0;i<len;i++)
	{
		if(s[i]=='(' || s[i]=='{' || s[i]=='[')
			a.push(s[i]);
		else if(s[i]==')' || s[i]=='}' || s[i]==']')
		{
			if(a.size() && m[a.top()]==s[i])
				a.pop();
			else
			{
				flag=0;
				break;
			}
		}
	}
	if(flag && a.size() == 0)
		printf("yes\n");
	else
		printf("no\n");
	
	
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_41611106/article/details/83002075
今日推荐