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
。