给定一串字符,不超过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;
}