【发布时间】:2021-10-25 16:54:27
【问题描述】:
class Solution{
static boolean ispar(String x){
char [] arr = x.toCharArray();
int length = arr.length;
Stack<Character> stack = new Stack<>();
boolean isBalanced = true;
if(arr[0] == '}' || arr[0] == ')' || arr[0] == ']'){
isBalanced = false;
}
else{
for(int i=0; i<length; i++){
char bracket = arr[i];
if(bracket == '{' || bracket =='(' || bracket == '['){
stack.push(bracket);
}
else if(!stack.empty() &&
((char) stack.peek() == '(' && (bracket == ')'))
|| ((char) stack.peek() == '{' && bracket == '}')
|| ((char) stack.peek() == '[' && bracket == ']')
){
stack.pop();
}
else{
isBalanced = false;
}
}
if(stack.empty()){
isBalanced = true;
}
else{
isBalanced = false;
}
}
return isbalanced;
}
}
我正在学习Stack 数据结构。这是我要解决的第一个问题,但它给了我这个例外:
Exception in thread "main" java.util.EmptyStackException
at java.base/java.util.Stack.peek(Stack.java:102)
at Solution.ispar(File.java:57)
at Driverclass.main(File.java:23)
【问题讨论】:
-
我建议自己调试程序,它会更快更有用。这里有一篇很棒的文章:ericlippert.com/2014/03/05/how-to-debug-small-programs
-
问题在于您的
else if块,else if(!stack.empty() && ((char) stack.peek() == '(' && (bracket == ')') || ((char) stack.peek() == '{' && bracket == '}') || ((char) stack.peek() == '[' && bracket == ']')))需要这样更改,并且return isBalanced;应该在最后return
标签: java data-structures