20.有效的括号:栈匹配
【LetMeFly】20.有效的括号:栈匹配
力扣题目链接:https://leetcode.cn/problems/valid-parentheses/
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([])"
输出:true
示例 5:
输入:s = "([)]"
输出:false
提示:
1 <= s.length <= 104s仅由括号'()[]{}'组成
解题方法:栈
遍历字符串,遇到左括号则入栈,遇到右括号则看栈顶元素与之是否匹配(匹配则出栈不匹配直接返回False),若遍历完栈为空才返回True。
- 时间复杂度$O(len(s))$
- 空间复杂度$O(len(s))$
也可以给栈中插入一个非括号哨兵字符来避免判断栈中是否有元素。
AC代码
C++
1 | |
Python
1 | |
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
20.有效的括号:栈匹配
https://blog.letmefly.xyz/2026/10/01/LeetCode 0020.有效的括号/