1.最简单的方法:
#include <stdio.h>
int
main()
{
char c;
int counter=0;
while ( ~(c = getchar()) ) {
if (c == '{')
counter++;
if (c == '}')
counter--;
}
if (counter == 0) {
fprintf(stderr, "ok\n");
} else {
fprintf(stderr, "bad\n");
}
return 0;
}
2.使用栈:
#include <stdio.h>
#include <string.h>
#define N 50
char s[N];
class Stack
{
private:
inttop;
public:
Stack()
{
top=-1;
}
boolJedge(char a[],int la);
charPop();
voidPush(char c);
boolIsEmpty()
{
return top==-1;
}
};
char Stack::Pop()
{
top--;
returns[top+1];
}
void Stack::Push(char c)
{
top++;
s[top]=c;
}
bool Stack::Jedge(char a[],int la)
{
char *p=a;
while(*p!='\0')
{
if(*p=='(' || *p=='[' || *p=='{')
{
Push(*p);
}
else
{
if(*p==')')
{
if(Pop()!='(')
{
return false;
}
}
else if(*p==']')
{
if(Pop()!='[')
{
return false;
}
}
else
{
if(Pop()!='{')
{
return false;
}
}
}
p++;
}
return IsEmpty();
}
int main()
{
intloop,i;
chara[N];
scanf("%d",&loop);
getchar();
for(i=0;i<loop;i++)
{
s[0]='\0';
gets(a);
Stack S;
if(S.Jedge(a,strlen(a)))
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
}