删除字符串中最外层多余的括号方法

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,遇到+或者-需要括号,但最外层括号需要删去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值