给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’,的字符串,判断字符串是否有效。有效字符串满足:
1. 左括号必须用相同类型的右括号闭合。
2. 括号必须以正确的顺序闭合。
利用栈算法可以很好的解决这个问题,下面是我写的代码:
import java.util.LinkedList;
public class Demo {
static public boolean action(String s) {
LinkedList<Character> queue = new LinkedList<Character>();
char ch[] = s.toCharArray();
for (int i = 0, length = ch.length; i < length; i++) {
char a = ch[i];
if (a == '{' || a == '(' || a == '[') {
queue.push(a);// 压入栈
} else {
if (queue.size() == 0) {// 如果栈是空的
return false;
}
char b = 0;
switch (a) {
case '}':
b = '{';
break;
case ')':
b = '(';
break;
case ']':
b = '[';
break;
default:
return false;
}
Character top = queue.poll();// 弹出栈顶值
if (top != b) {
return false;
}
}
}
return queue.size() == 0;
}
public static void main(String[] args) {
System.out.println(action("{()[][{()}][]}"));
}
}
这段代码针对不同字符串的结果如下表:
| 字符串 | 结果 |
| {} | true |
| ()[]{} | true |
| {()[][{()}][]} |
true |
| {) | false |
| {(])} | false |
| {(}[)] | false |
| ( | false |
本文深入探讨了如何使用栈算法解决括号匹配问题,详细解释了左括号与右括号正确闭合的条件,提供了Java实现代码,并通过多个实例验证了算法的有效性。
1625

被折叠的 条评论
为什么被折叠?



