Skip to content

这个一般是模拟的,在想到使用这个数据结构的情况下,相对来说是比较简单

题目 ​

LC1047. 删除字符串中的所有相邻重复项 ​

这个题目就是类似消消乐:

  1. 先看看它最后的元素是否和要插入的元素一样
  2. 如果一样,那么就把原来的元素删除,并且跳过当前这个要插入的元素
  3. 如果不一样,那么就把这个要插入的元素给插入

由于是看最后的一个元素,这就很自然地想到使用栈这个数据结构

LC394. 字符串解码 ​

这个题目是这样解法:

  1. 看到字符,那么就先存储起来
  2. 看到左括号,那么开辟一个空间,然后存储起来
  3. 看到右括号,那么就要先去除内部的元素

由此可见,它元素是后进先出的,因此就要想到使用栈这个数据结构

思路:

  1. 如果是数字,那么就要计算出来数字
  2. 如果是左括号,那么把一个新的 String 放入栈中,把计算出来的数字放入对应的栈内,注意要把原来的存储数字这个变量清零
  3. 如果是字符,那么就要把这个字符添加到栈顶元素的末尾
  4. 如果是右括号,说明已经遍历完成,弹出栈顶元素,复制,然后尾插到当前的栈顶元素的末尾

LC946. 验证栈序列 ​

思路:

  1. 先看一看要插入的元素是否和当前弹出的元素一样
  2. 如果不一样,那么再看看当前栈顶的元素是否和要弹出的元素一样
  3. 如果还是不一样,那就把元素添加到栈中,重复循环
  4. 在元素都添加完后,处理一下栈中的元素,把该弹出的元素给弹出来
  5. 最后判断一下栈是否为空,如果不为空,那么就不满足条件