gpt4 book ai didi

java - 使用 ArrayList 作为堆栈来验证元素对(得到异常结果)

转载 作者:行者123 更新时间:2023-12-02 02:19:07 25 4
gpt4 key购买 nike

以下 boolean 方法确定(99% 的时间!)由各种括号组成的给定字符串是否“平衡”,即。如此排序的括号将构成有效的语法安排。括号被单独输入到 ArrayList 中,然后 ArrayList 充当堆栈,删除出现在列表末尾的有效对。然后空列表返回 true,表示“平衡”安排。

我的问题是,为什么以下“不平衡”输入......

([])({)}

返回真?

如果有人愿意花时间理解这个问题,我将非常感激。

public static boolean isBalanced(String e) {
char a[] = e.toCharArray();
ArrayList<Character> b = new ArrayList<Character>();
for (int i = 0; i<a.length; i++){
b.add(a[i]);
while (b.size() >= 2 && ((b.get(b.size()-2)=='(' && b.get(b.size()-1)==')') || (b.get(b.size()-2)=='[' && b.get(b.size()-1)==']') || (b.get(b.size()-2)=='{' && b.get(b.size()-1)=='}'))){
b.remove(b.size()-2);
b.remove(b.size()-1);
}
if (b.isEmpty()){
return true;
}
}
return false;
}

最佳答案

因为检查( [ ] )后即。 i=3 条件 b.isEmpty() 为 true。

将条件更改为:

if (b.isEmpty() && i == a.length - 1) {
return true;
}

关于java - 使用 ArrayList 作为堆栈来验证元素对(得到异常结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48787815/

25 4 0