消除括号

2015-02-13  本文已影响56人  lintong

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

}
上一篇下一篇

猜你喜欢

热点阅读