今天要讲的这道题是 bilibili 今年的笔试真题,也是一道关于栈的经典面试题。
经过前面文章的学习,我想很多朋友已经看出来了,我接下来要写的是一个关于「算法图解」的系列文章,中间可能会穿插少量的其他类型的文章,但「算法和数据结构」会是我今年文章输出的重点内容。
我在写这个算法系列的时候会注意两个问题:
保证算法的解题思路大家都能看懂,因此我会以图片的形式进行思路讲解,这样更直观、更易于理解;
在介绍完一个知识点之后,会进行大量的练习,以巩固所学的内容,比如当我讲完「栈」结构之后,我会围绕着「栈」做一系列的经典面试题练习。
学习算法最关键的是掌握解题的思路,只要思路对了,编写代码只是时间的问题。
我们先来回顾一下往期关于「栈」的内容:
那么接下来,我们就进入今天的正式内容...
题目
给定一个只包括 '(', ')', '{', '}', '[', ']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
<