📅  最后修改于: 2023-12-03 15:36:38.969000             🧑  作者: Mango
分隔符匹配是一个经典的问题,可以用堆栈来解决。堆栈数据结构是LIFO(后进先出)的结构,特别适用于分隔符匹配问题。
就是匹配一段字符串中的各种分隔符是否匹配,例如圆括号、方括号和花括号等。
例如以下字符串:
a{b(c[d]e)f}g
其中,花括号、圆括号和方括号可以匹配,因为每个左括号都有与之对应的右括号。
我们可以使用堆栈来解决:
以下是Java实现的代码片段:
public static boolean isDelimiterMatched(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '{' || c == '[' || c == '(') {
stack.push(c);
} else if (c == '}' || c == ']' || c == ')') {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if (c == '}' && top != '{' || c == ']' && top != '[' || c == ')' && top != '(') {
return false;
}
}
}
return stack.isEmpty();
}
这个函数接受一个字符串作为参数,返回一个布尔值来表示分隔符是否匹配。
堆栈是解决分隔符匹配问题的有效数据结构。使用堆栈可以方便地解决这个问题,代码实现也比较简单,容易理解。