概念:
栈是一种后进先出的数据结构。
栈的应用:
- 无处不在的Undo操作(撤销)
- 程序调用的系统栈(程序中断时)
栈的实现:
- void push(E) —— 添加
- E pop() —— 取出
- E peek() —— 查看栈顶元素
- int size() —— 查看元素个数
- boolean isEmpty() —— 查看该栈是否为空
代码:
package com.qingFeng;import java.util.Stack;public class Main<E> {public static void main(String[] args) {Stack<Integer> integerStack = new Stack<>();boolean empty = integerStack.isEmpty();System.out.println(empty);for (int i=0 ; i<=10 ; i++){integerStack.push(i);}System.out.println(integerStack.size());System.out.println(integerStack.isEmpty());for (int i = 0 ; i <= 10 ; i++){integerStack.pop();System.out.println(integerStack.peek());}System.out.println(integerStack.size());System.out.println(integerStack.isEmpty());}}
字符串匹配:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:true提示:1 <= s.length <= 104s 仅由括号 '()[]{}' 组成
import java.util.Stack;class Solution {public boolean isValid (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 (stack.isEmpty()) {return false;}char topChar = stack.pop();if (c == ')' && topChar != '(') {return false;}if (c == '[' && topChar != ']') {return false;}if (c == '{' && topChar != '}') {return true;}}}return stack.isEmpty();}}
