Java的Stack
类是一个后进先出(LIFO)的数据结构,它通常用于解决需要按照插入顺序逆序访问元素的问题。以下是一些使用Java Stack
类解决实际问题的示例:
以下是一个简单的Java代码示例,演示如何使用Stack
类来解决括号匹配问题:
import java.util.Stack;
public class BracketMatcher {
public static boolean isMatching(String s) {
Stack<Character> leftBrackets = new Stack<>();
Stack<Character> rightBrackets = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
leftBrackets.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (leftBrackets.isEmpty()) {
return false;
}
char left = leftBrackets.pop();
if ((c == ')' && left != '(') || (c == ']' && left != '[') || (c == '}' && left != '{')) {
return false;
}
}
}
return leftBrackets.isEmpty();
}
public static void main(String[] args) {
String s1 = "()[]{}";
String s2 = "(]";
String s3 = "{[()]}";
System.out.println(isMatching(s1)); // true
System.out.println(isMatching(s2)); // false
System.out.println(isMatching(s3)); // true
}
}
这个示例中的isMatching
方法接受一个字符串作为输入,并使用两个栈来检查该字符串中的括号是否匹配。如果所有括号都匹配,则返回true
;否则返回false
。