9-有效的括号

题目

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。

  2. 左括号必须以正确的顺序闭合。

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

示例 1:

输入: "()" 输出: true

示例 2:

输入: "()[]{}" 输出: true

示例 3:

输入: "(]" 输出: false

示例 4:

输入: "([)]" 输出: false

示例 5:

输入: "{[]}" 输出: true

解答

记得曾经取面试不问租房,ceo就问了我这道题,不过感觉更像是在教我,非常温柔耐心地拆解。。怕是我太菜了他都看不下去了吧。。😂

最后“讨论”出来的是,用堆栈。如果是左括号就入栈,右括号就拿出栈顶的括号看看,是否匹配。

因为只有三个括号,因此好像把key设置成右括号更方便一些

Runtime: 52 ms, faster than 90.76% of JavaScript online submissions forValid Parentheses.

Memory Usage: 33.8 MB, less than 83.04% of JavaScript online submissions for Valid Parentheses.

优化一下?

最后的判断可以精简一下:

增加一个边界条件:如果第一个字符是右括号,那么必然是false

那么加了之后效果如何呢?

优化后的代码:

Runtime: 40 ms, faster than 99.86% of JavaScript online submissions forValid Parentheses.

Memory Usage: 33.7 MB, less than 96.05% of JavaScript online submissions for Valid Parentheses.

【其实感觉这个判断地很不稳定……有时40ms有时56ms……】

Last updated

Was this helpful?