概念:
栈是一种后进先出的数据结构。
栈的应用:
- 无处不在的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 <= 104
s 仅由括号 '()[]{}' 组成
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();
}
}