java中使用单堆栈和开关参数进行排序
我试图编写两个方法,只使用一个堆栈和一个switch语句就可以对一串方括号进行排序。我无法让它工作,我想知道是否是因为字符串中的“”的情况?默认情况下不应该选择这些,或者我是否理解了错误的switch语句?这就是我现在的位置
out.println(checkParentheses("({} [()] ({}))")); // should print true
out.println(!checkParentheses("({} [() ({)})")); // should print false
Boolean checkParentheses(String brackets) {
Deque<Character> stack = new ArrayDeque<>();
for( char ch : brackets.toCharArray()) {
if (stack.peek() == matching(ch)) {
stack.pop();
} else {
stack.add(ch);
}
}
return stack.isEmpty();
}
char matching(char ch) {
// char c = (' ');
switch (ch) {
case ')':
return '('; // c = '('
case ']':
return '[';
case '}':
return '{';
default:
// return c;
throw new IllegalArgumentException("No match found");
}
}
# 1 楼答案
基本上,
checkParentheses
应该简单如下:然后,使用
switch
语句,其他方法可能如下所示:然后,测试的输出如下所示: