java如何检查字符串是否平衡?
我想测试输入字符串是否平衡。如果有一个匹配的开始和结束括号、括号或大括号,它将是平衡的
example:
{} balanced
() balanced
[] balanced
If S is balanced so is (S)
If S and T are balanced so is ST
public static boolean isBalanced(String in)
{
Stack st = new Stack();
for(char chr : in.toCharArray())
{
if(chr == '{')
st.push(chr);
}
return false;
}
我在选择做什么时遇到了问题。我是否应该将每个开始或结束的括号、括号或大括号放在一个堆栈中,然后将它们弹出?如果我把它们拿出来,那对我有什么帮助
# 1 楼答案
1)对于每个打开的括号:
{ [ (
将其推到堆栈中2)对于每个结束括号:
} ] )
从堆栈中弹出并检查括号的类型是否匹配。如果不返回false
即字符串中的当前符号是
}
,如果从堆栈中弹出的是{
中的任何其他符号,则立即返回false
3)如果行尾和堆栈不是空的,则返回
false
,否则返回true
# 2 楼答案
下面是一个
Java
代码示例,用于检测字符串是否平衡http://introcs.cs.princeton.edu/java/43stack/Parentheses.java.html
我们的想法是——
( [ {
,将其推到堆栈上李>) ] }
,请尝试从堆栈中弹出匹配的左大括号( [ }
。若你们找不到匹配的大括号,那个么字符串是不平衡的李># 3 楼答案
是的,堆栈是任务的合适选择,也可以使用递归函数。如果你使用一个堆栈,那么你的想法是推堆栈上的每个打开的括号,当你遇到一个关闭的括号时,你检查堆栈的顶部是否匹配它。如果匹配,则将其弹出,如果不匹配,则为错误。完成后,堆栈应为空
# 4 楼答案
粗略地说,如果它是平衡的,这意味着你的堆栈应该是空的
为此,在解析
}
时需要弹出堆栈额外的要求是检查
}
前面是否有{
或者弹出的字符是否是{
# 5 楼答案
对此的任何反馈都是非常欢迎的。如果你发现有什么错误或无用的东西,请批评。我只是在努力学习
# 6 楼答案
我编写这段代码是为了解决这个问题,在每个括号类型中只使用一个整数(或者可能是一个字节)变量
OBS
希望这有帮助。 干杯