美文网首页
消除括号

消除括号

作者: lintong | 来源:发表于2015-02-13 11:33 被阅读56次

    给定一个如下输入格式的字符串(1,(2,3),(4,(5,6),7))括号内的元素可以是数字,也可以是另一个括号,请实现一个算法消除嵌套的括号,比如把上面的表达式变成:(1,2,3,4,5,6,7),如果表达式有误请报错。

    #include <string>
    using namespace std;
    
    string ElimenateBracket(const string &str){
        int counter = 0;
        string result;
        for(int i = 0; i < str.size(); ++i){
            if(str[i] == '('){
                ++counter;
            }
            else if(str[i] == ')'){
                --counter;
                if(counter < 0){
                    result.clear();
                    return result;
                }
            }
            else{
                result.push_back(str[i]);
            }
        }
        if(counter != 0){
            result.clear();
            return result;
        }
        result.insert(result.begin(), '(');
        result.push_back(')');
        return result;
    }
    
    int main(){
        string str("(1,(2,3),(4,(5,6),7))");
        string m = ElimenateBracket(str);
        return 0;
    
    }
    

    相关文章

      网友评论

          本文标题:消除括号

          本文链接:https://www.haomeiwen.com/subject/iiisxttx.html