码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-01 15:42:20      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:算法题

/*
给定一个如下输入格式的字符串,(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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:算法题

原文地址:http://blog.csdn.net/liuhuiyan_2014/article/details/47186647

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!