栈和栈的应用

时间:2021-08-07 20:32:49

1.基础知识

  • 栈也是一种线性结构
  • 相比数组,栈对应的操作是数组的子集
  • 只能从一端添加元素,也只能从一端取出元素。
  • 这一端称为栈顶。
  • 后进先出(LIFO)

2.栈的应用

  • 无处不在的Undo操作(撤销)

  • 程序调用的系统栈

    栈和栈的应用

3.栈的实现

栈和栈的应用

4.Stack应用

LeetCode 20.有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。


import java.util.Stack;
public class IsValidClass {
    public boolean isValid(String s) {
        if (s==null||s.isEmpty()==true)
            return true;
        char[] charArray = s.toCharArray();
        Stack<Character> stack=new Stack<>();

        for (int i=0;i<charArray.length;i++){
            char ch=charArray[i];
            if (ch=='('||ch=='['||ch=='{')
                stack.push(ch);
            else if (stack.isEmpty()||(!((ch==')'&&stack.pop()=='(')||(ch==']'&&stack.pop()=='[')||(ch=='}'&&stack.pop()=='{'))))
                return false;
        }
        if (stack.isEmpty())
            return true;
        return false;
    }
}