【发布时间】:2014-01-16 18:18:12
【问题描述】:
我需要编写一个程序来检查括号是否平衡,我知道该怎么做并且已经实现了。但是,第二部分我遇到了麻烦, "给出一个算法,如果字符串没有正确嵌套和平衡,则返回第一个违规括号在字符串中的位置,即如果发现多余的右括号,则返回其位置;如果左括号太多,则返回第一个多余的左括号的位置。"
我们还没有了解堆栈或正则表达式,所以我无法使用它们。下面是我检查嵌套括号是否平衡的实现。
public static int checkNest(char[] arr) {
int counter = 0,index = 0;
for(int i=0; i<arr.length; i++) {
if(arr[i] == '(')
counter++;
else if(arr[i] == ')')
counter--;
}
if(counter == 0)
index = -1;
return index;
}
现在不正确的索引总是0,我需要操纵我的代码来正确显示不正确括号的索引。
【问题讨论】:
-
您现在已准备好执行第二次传递...您需要使用有关不平衡方式的信息开始该传递(即,如果计数器小于 0,则也有许多关闭的括号 - 有太多的打开的括号更好)。
-
` 计数器--; if(counteri 即当前位置
-
您是否在查看出口是否打开和关闭括号?
-
每次您的
couner小于0- 您都会遇到不平衡的括号 -
您确定
(和)的平衡数量足以满足您的需求吗?通常,您需要正确数量的(之前)。例如。")("不应是有效输入。
标签: java