R6-1 括号匹配判断 (30 分)
输入样例1:
{[2*(3+2)-7]}/4
输出样例1:
{[2*(3+2)-7]}/4 match
输入样例2:
{[()]}
输出样例2:
{[()]} match
int match (char exp[])
{
int i,k=0,j=0,flag=0;
char s[20];
char a[20];
for(i=0;i<strlen(exp);i++)
{
switch(exp[i])
{
case '(':s[j++]=')';break;
case '{':s[j++]='}';break;
case '[':s[j++]=']';break;
}
}
// printf("%s\n",s);
for(i=0;i<strlen(exp)/2;i++)
if(exp[i]==')'||exp[i]=='}'||exp[i]==']')
flag=1;
if(flag==1)
{
for(i=0;i<strlen(exp);i++)
{
switch(exp[i])
{
case ')':a[k++]=')';break;
case '}':a[k++]='}';break;
case ']':a[k++]=']';break;
}
}
// printf("%s",a);
}
if(flag==0)
{
for(i=strlen(exp)-1;i>=0;i--)
{
switch(exp[i])
{
case ')':a[k++]=')';break;
case '}':a[k++]='}';break;
case ']':a[k++]=']';break;
}
}
// printf("%s",a);
}
if(!strlen(s)&&!strlen(a)) return 1;
for(i=0;i<j;i++)
{
if(s[i]!=a[i])
return 0;
}
return 1;
}