消除括号
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;
}