括号匹配
#include<stdio.h>
struct stack_t
{
int up;//指向栈顶
char arr[102400];//栈空间不够也可能运行错误
};
int isValid(char *s)
{
struct stack_t sk;
sk.up = 0;
for(int i = 0; s[i] != 0; i++)
{
if((s[i] == '(') || (s[i] == '{') || (s[i] == '['))
{
sk.arr[sk.up++] = s[i];
}
else
{
/*
if((s[0] == ')') || (s[0] == '}') || (s[0] == ']'))
{
return 0;
}
*/
if(sk.up == 0)
{
return 0;
}
char m = sk.arr[--sk.up];
switch(m)
{
case '(':
if(s[i] != ')')
{
return 0;
}
break;
case '{':
if(s[i] != '}')
{
return 0;
}
break;
case '[':
if(s[i] != ']')
{
return 0;
}
break;
}
}
}
if(sk.up == 0)
{
return 1;
}
return 0;
}
int main()
{
char s[] = "[";
printf("%s\n", isValid(s) ? "true" : "false");
return 0;
}