给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入格式:
输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。
输出格式:
如果括号配对,输出yes,否则输出no。
输入样例1:
sin(10+20)
输出样例1:
yes
输入样例2:
{[}]
输出样例2:
no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
#include<string.h>
char pi(char a)
{
if(a==')')
{
return '(';
}
if(a=='}')
{
return '{';
}
if(a==']')
{
return '[';
}
return '\0';
}
int main()
{
char s[1000];
int n;
char stack[1000];
int top=-1;
fgets(s, sizeof(s), stdin);
n=strlen(s);
for(int i=0;i<n;i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
{
top++;
stack[top]=s[i];
}
if(s[i]==')'||s[i]==']'||s[i]=='}')
{
if(top<0)
{
printf("no\n");
return 0;
}
if(pi(s[i])!=stack[top])
{
printf("no\n");
return 0;
}
else
{
top--;
}
}
}
if(top==-1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}