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。