概念:
    栈是一种后进先出的数据结构。
    栈的应用:

    • 无处不在的Undo操作(撤销)
    • 程序调用的系统栈(程序中断时)

    栈的实现:

    1. void push(E) —— 添加
    2. E pop() —— 取出
    3. E peek() —— 查看栈顶元素
    4. int size() —— 查看元素个数
    5. boolean isEmpty() —— 查看该栈是否为空

    代码:

    1. package com.qingFeng;
    2. import java.util.Stack;
    3. public class Main<E> {
    4. public static void main(String[] args) {
    5. Stack<Integer> integerStack = new Stack<>();
    6. boolean empty = integerStack.isEmpty();
    7. System.out.println(empty);
    8. for (int i=0 ; i<=10 ; i++){
    9. integerStack.push(i);
    10. }
    11. System.out.println(integerStack.size());
    12. System.out.println(integerStack.isEmpty());
    13. for (int i = 0 ; i <= 10 ; i++){
    14. integerStack.pop();
    15. System.out.println(integerStack.peek());
    16. }
    17. System.out.println(integerStack.size());
    18. System.out.println(integerStack.isEmpty());
    19. }
    20. }

    字符串匹配:

    1. 给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。
    2. 有效字符串需满足:
    3. 左括号必须用相同类型的右括号闭合。
    4. 左括号必须以正确的顺序闭合。
    5. 示例 1
    6. 输入:s = "()"
    7. 输出:true
    8. 示例 2
    9. 输入:s = "()[]{}"
    10. 输出:true
    11. 示例 3
    12. 输入:s = "(]"
    13. 输出:false
    14. 示例 4
    15. 输入:s = "([)]"
    16. 输出:false
    17. 示例 5
    18. 输入:s = "{[]}"
    19. 输出:true
    20. 提示:
    21. 1 <= s.length <= 104
    22. s 仅由括号 '()[]{}' 组成
    1. import java.util.Stack;
    2. class Solution {
    3. public boolean isValid (String s) {
    4. Stack<Character> stack = new Stack();
    5. for (int i = 0 ; i < s.length ; i ++) {
    6. char c = s.charAt(i);
    7. if (c == '(' || c == '[' || c == '{') {
    8. stack.push(c);
    9. }
    10. else {
    11. if (stack.isEmpty()) {
    12. return false;
    13. }
    14. char topChar = stack.pop();
    15. if (c == ')' && topChar != '(') {
    16. return false;
    17. }
    18. if (c == '[' && topChar != ']') {
    19. return false;
    20. }
    21. if (c == '{' && topChar != '}') {
    22. return true;
    23. }
    24. }
    25. }
    26. return stack.isEmpty();
    27. }
    28. }