题解 | 括号配对问题
括号配对问题
https://www.nowcoder.com/practice/57260c08eaa44feababd05b328b897d7
#include <stdio.h>
#include<string.h>
int main()
{
char s[10001];
scanf("%s",s);
int flag=1;
int count_1=0;//'('
int count_2=0;//')'
int count_3=0;//'['
int count_4=0;//']'
int len=strlen(s);
int a[10001]={0},b[10001]={0},c[10001]={0},d[10001]={0};
for(int i=0;i<len;i++)
{
if(s[i]=='(') a[count_1]=i,count_1++;
if(s[i]==')') b[count_2]=i,count_2++;
if(s[i]=='[') c[count_3]=i,count_3++;
if(s[i]==']') d[count_4]=i,count_4++;
}
if(count_1!=count_2||count_3!=count_4)
{
flag=0;
}
if(count_1==count_2||count_3==count_4)
{
for(int i=0;i<len;i++)
{
if(b[i]<a[i]||d[i]<c[i]||(c[i]>a[i]&&b[i]>c[i]&&b[i]<d[i]))
{
flag=0;
}
}
}
if(flag==0)
{
printf("false");
}
else
{
printf("true");
}
return 0;
}
查看2道真题和解析