这是我的方法代码,不会给我错误,但在调用时不起作用,如有任何帮助,将不胜感激。谢谢:
static boolean isBalanced(String expr){
Stack stack = new Stack();
for (char ch : expr.toCharArray()) {
if (ch == '{' || ch == '(' || ch == '[') {
stack.push(expr);
} else {
if (expr.isEmpty()) {
return false;
}
char latestOpenedPar = (char)stack.pop();
if (latestOpenedPar == '{' && ch != '}') {
return false;
} else if (latestOpenedPar == '(' && ch != ')') {
return false;
} else if (latestOpenedPar == '[' && ch != ']') {
return false;
}
}
}
return stack.isEmpty();
}
这个问题不太清楚,但我想你想知道不同的括号是否“一致”
if(expr.is空()){返回false;}
这是无用的,因为如果条件为真,它将永远不会进入for循环if(ch == '{' || ch == '(' || ch == '[') { stack.push(exr);}
在这里,您将作为输入的整个字符串放入堆栈中,但是在您将stack.pop()
与各种括号进行比较之后,因此正确的语句可以是stack.push(ch);
stack.pop()
而不检查堆栈是否至少有一个元素如果字符串是“”(abc)”
,你将按下(
,然后弹出四次,分别为a
、b
、c
)和)
,这当然不起作用。还有expr。isEmpty()
在循环中永远不会返回true,因为如果它为空,expr。toCharArray()
将返回一个长度为零的数组,循环将执行零次。使用peek()。
此外,您的堆栈应该声明为:
Stack<Character> stack = new Stack<>();
在这种情况下,您不需要强制转换
pop()
或peek()
返回的值;它将自动从字符
解封为字符
。
问题内容: 我想测试输入的String是否平衡。如果有匹配的左,右括号,括号或花括号,则将是平衡的。 我在选择做什么时遇到问题。我是否应该将每个左括号或右括号,方括号或大括号放在堆栈中,然后弹出它们?如果我将它们弹出,那对我有什么帮助? 问题答案: 1)对于每个开口支架:将其推入堆栈。 2)对于每个右括号:从堆栈中弹出并检查括号的类型是否匹配。如果不退货; 即 String中的当前符号是,如果从堆
我想测试输入字符串是否平衡。如果有一个匹配的开始和结束括号、括号或大括号,这将是平衡的。 我在选择做什么时遇到了问题。我是否应该将每个开始或结束的括号、括号或大括号放在一个堆栈中,然后将它们弹出?如果我把它们拿出来,这对我有什么帮助?
我得写Python补充函数: 对于递归检查输入字符串是否具有平衡括号的函数: 我不能使用堆栈。当输入字符串为空时,当括号开始和结束时,我必须包含一个选项(以及一个小提示,不是每个结束括号我们都应该做出相同的反应),并包含对括号以外字符的反应。补充函数必须返回未处理的文本和以前的结果。 我有代码,遗憾的是它并不适用于我找到的每个例子: 在测试中,错误的答案在 和 我试图从 pythontutor.c
在这个问题之前,我先要说明一个事实,那就是我学习编程才一个月,而这个学校的作业却把我难住了。具体地说,它是摩尔斯电码到英语翻译器(反之亦然)...这是我被困住的部分:
作为一名java(和编程)新手,我在完成分配给我们的任务时遇到了麻烦。作业分为三部分,检查给定的字符串是否有平衡括号。 “规则”如下: -是平衡的
例如: 字符串1=helloworld字符串2=asdfuvjerhelloworld 这应该是真的。 另一个例子:字符串1=helloworld字符串2=lshewodxzr 这也应该是真的。 所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。