string RemoveOutermostBracket(string &expression){
int bracnum=0;//未配对左括号的个数
int i=0; //字符串的下标
if(expression[0] == '(' && expression[expression.length()-1] == ')'){ //如果最外层是括号
for(i=1;i<=expression.length()-2;i++){
if(expression[i] == '('){ //如果是左括号
bracnum++; //未配对左括号的个数加一
}
else if(expression[i] == ')'&&bracnum!=0){ //如果是右括号且还有未配对左括号
bracnum--; //未配对左括号的个数减一
}
else if(expression[i] == ')'&&bracnum==0){ //如果是右括号且没有未配对左括号
return expression; //最外层的括号不是一对,返回原字符串
}
}
if(bracnum==0){ //循环结束后,如果未配对左括号的个数为0,说明最外层的括号是一对
expression=expression.substr(1,expression.length()-2); //去掉最外层的括号
return expression;
}
}
else{
return expression; //如果最外层没有括号,返回原字符串
}
}
数据结构作业practical02的代码的一部分 看好像没什么人用这个方法遂发csdn
在前面的代码中生成了一个算数式expression,遇到+或者-需要括号,但最外层括号需要删去