int matched(char* s)
{
char stack[1024];
int n = 0;
while (*s)
{
switch (*s)
{
case '(':
if (n < 1024)stack[n++] = '(';
else return 0;
break;
case '{':
if (n < 1024)stack[n++] = '{';
else return 0;
break;
case '[':
if (n < 1024)stack[n++] = '[';
else return 0;
break;
case '}':
if (n >0 && stack[--n] == '{'){}
else return 0;
break;
case ')':
if (n >0 && stack[--n] == '('){}
else return 0;
break;
case ']':
if (n >0 && stack[--n] == '['){}
else return 0;
break;
}
s++;
}
return (n == 0);
}
#define CHECK(s) printf("%s check is:%s\n", s, matched(s)?"true":"false")
int main()
{
CHECK("(()){{}}{{}}[()]");
CHECK("(()){{}}{{}[()]");
CHECK("(()){{}}{{}}[()]]");
CHECK("[((())){{}}{{}}[()]]");
return 0;
}
温馨提示:答案为网友推荐,仅供参考