题意:要你改变序列中的一个位置使得该括号序列达到平衡的状态,平衡就是你用一个栈去搞那个序列,匹配完毕之后该栈会是空的。ps:我当大家都知道如何用栈去做括号匹配。
我发现标程有问题,也不知道自己是不是没有看清楚题目,不过我想,在标程里面加一个东西就可以达到目的,就是你在输入的时候判断下左右括号的个数差与2的关系大小,,如果大于2,那么结果必然是0,反之就按照标程里面那么去做。说实话我到现在都不清楚为什么最终最后括号的个数就可以是答案。。
1.depth==-1,结果就是右括号的个数?当前的depth=-1,说明上一个位置的时候depth=0,那么到前一个位置的时候,之前的那段括号序列是平衡的,因为这个右括号的出现才使得该序列不平衡了,所以,我们可以采取两种措施来达到平衡,第一,我们可以从当前位置之前的位置中把一个右括号变成左括号来与当前位置的右括号匹配,我们暂且先不管之后的部分会出现一些什么东西;第二,我们可以把当前位置的右括号变成左括号,使之与后面部分中出现的右括号去匹配。但是,真的,可以不用管后面序列中出现的东西吗,我很是怀疑啊,该序列长度是奇数也符合?我想,如果标程中能加我说的那个个数==2这个东西的话,那么后续部分是对结果没有影响的吧。
2.直到处理完序列,那么如果左括号个数大于0,那么结果便是左括号个数,这个很好理解,因为他里面有个处理就是当depth<=1的时候他把左括号个数置0,所以,实际的左括号个数应该是要多1的。
善待每一天,努力做好自己。
欢迎转载,注明出处。