我想测试输入的String是否平衡。如果有匹配的左,右括号,括号或大括号,则将是平衡的。
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)对于每个左括号:{ [ (
将其插入堆栈。
2)对于每个右括号:从栈中弹出} ] )
并检查括号的类型是否匹配。如果没有返回false
;
,即String中的当前符号为}
,如果从堆栈弹出的是{
中的其他任何符号,则立即返回false
。
3)如果行尾和堆栈不为空,则返回false
,否则返回true
。