算法题:除去字符串里面的括号

来源:互联网 发布:php是后端还是前端 编辑:程序博客网 时间:2024/05/16 11:13
/*给定一个如下输入格式的字符串,(1,(2,3),(4,(5,6),7))括号内的元素可以是数字,也可以另一个括号,请实现一个算法消除嵌套的括号。比如把上面的表达式变成:(1,2,3,4,5,6,7),如果表达式有误请报错。*/#include <iostream>using namespace std;int Grial(char *&dist,const char *str){    //判断表达式是否合理,此处我就不用栈了,    //栈还挺浪费空间的,直接上一个标识flags=0,    //遇到'(',flags++,遇到')',flags--,if(flags==0)    //则这个表达式正确,否则-1返回 。    int flags = 0;    dist = new char[strlen(str)+1];    char *q = dist;    const char *p = str;    while (*p!='\0')    {        if (*p == '(')            flags++;        if (*p == ')')            flags--;        p++;    }    if (flags != 0)return -1;    p = str;    while (*p != '\0')    {        if (*p == '(' || *p == ')')        {            p++;            continue;        }        else        {            *q++ = *p++;        }    }    *q = '\0';    return 0;}int main(){    char src[] = "(1,2,(3,4,5),6,(8,(9,10),11))";    char *dist = NULL;    cout<<Grial(dist,src)<<endl;    cout << dist;    return 0;}
1 0