输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.

#include 

int push(char *pstr, char *dstr );

int main()
{
    char *str = "]d)]fa(sdf)df[dfds(dfd)] ()*()";

    char data[50];

    int flag = -5;

    flag = push(str,data);

    if(flag == -1)
        printf("%d\n",0);
    else
        printf("%d\n",1);



}

int push(char *pstr, char *dstr )
{
    int i = 0, j = -1;

    if(pstr == NULL)
        return -2;

    while(pstr[i] !='\0')
    {
        if(pstr[i] == '(' || pstr[i] == '[') 
        {
            j++;
            dstr[j] = pstr[i];
        }
        else
        {
            if(pstr[i] == ')' )
            {
                if(j == -1)
                {
                    return j+1;
                }
                else
                {
                    if(dstr[j] == '(')
                        j--;
                    else
                    {
                        j++;
                        dstr[j] = pstr[i];
                    }
                }
            }
            if(pstr[i] == ']')
            {
                if(j == -1)
                {
                    return j+1;
                }
                else
                    if(dstr[j] == '[')
                        j--;
                    else
                    {
                        j++;
                        dstr[j] = pstr[i];
                    }
            }
        }
        i++;
    }

    return j;

}

你可能感兴趣的:(华为OJ)