【发布时间】:2015-05-16 22:59:44
【问题描述】:
这是一个我试图解决一周的学校作业,我仍然没有接近真正的答案。如果有人如此友善并用一些可靠的指针指导我,那将非常感激,请注意我不想要解决方案。 例如,字符串 () 、 [()] 、 {([])} 、 ()[] 是 4 个平衡字符串。
编写递归方法:`
public static boolean isBalanced(String in)
如果 in 是平衡括号字符串并且返回 true 如果不是,则为假。
这是我一直在处理的一些代码:
public static boolean isBalanced(String in){
if(in.length() == 0){
return true;
}
char aux = in.charAt(0);
if(aux == '{' ||aux == '[' ||aux == '(' ){
if(aux == '{'){
return isBalanced(in.substring(1));
}
if(aux == '}'){
return false || isBalanced(in.substring(1));
}
if(aux == '['){
return isBalanced(in.substring(1));
}
if(aux == ']'){
return false || isBalanced(in.substring(1));
}if(aux == '('){
return isBalanced(in.substring(1));
}
if(aux == ')'){
return false || isBalanced(in.substring(1));
}
}
return isBalanced(in.substring(1));
}
}
【问题讨论】:
-
使用堆栈的解决方案非常自然且易于提出,但我无法递归思考。这就像试图用我对面的手写字什么的。
-
@CarlosSanchez 精确地使用堆栈来避免递归。使用堆栈,您只需要一个循环。
-
问题是这里的所有答案都对我没有帮助,我已经知道如何使用堆栈来解决它,我需要使用递归来解决它,而签名不能改变,而且我不能使用任何辅助方法,因为该方法是静态的。
-
您收到的错误消息中解释了原因。阅读它,谷歌它,如果你遇到困难,发布代码和完整的错误消息。