1. 程式人生 > >7-3 括號匹配 (25 分)

7-3 括號匹配 (25 分)

給定一串字元,不超過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;
 }