返回
算法练级 - 刷题之旅:LeetCode-20. 有效的括号
后端
2023-10-14 12:54:20
算法练级 - 刷题之旅:LeetCode-20. 有效的括号
背景
金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。
LeetCode-20. 有效的括号
在计算机科学中,括号匹配是一个常见的问题。在许多编程语言中,括号用于表示代码块或数据结构的范围。为了确保程序的正确性,括号必须成对出现,并且按照正确的顺序嵌套。
LeetCode-20. 有效的括号是一个经典的刷题题,也是算法练级中的一个重要内容。这道题要求判断给定字符串中的括号是否匹配。
解题思路
解决LeetCode-20. 有效的括号题的关键是使用栈(stack)数据结构。栈是一种后进先出(LIFO)的数据结构,它允许我们在常数时间内添加和删除元素。
我们可以使用栈来判断给定字符串中的括号是否匹配。当我们遇到一个左括号时,我们将它压入栈中。当我们遇到一个右括号时,我们将栈顶的元素弹出并与右括号进行比较。如果它们匹配,则说明括号匹配成功;如果不匹配,则说明括号匹配失败。
实现方法
def is_valid(s):
"""
判断给定字符串中的括号是否匹配。
参数:
s: 给定字符串。
返回:
True:如果括号匹配成功;False:如果括号匹配失败。
"""
stack = []
brackets = {')': '(', '}': '{', ']': '['}
for char in s:
if char in brackets.values():
stack.append(char)
elif char in brackets.keys():
if not stack or stack.pop() != brackets[char]:
return False
else:
return False
return not stack
示例
>>> is_valid('()')
True
>>> is_valid('[]')
True
>>> is_valid('{}')
True
>>> is_valid('(())')
True
>>> is_valid('([])')
True
>>> is_valid('([]{})')
True
>>> is_valid('([)]')
False
>>> is_valid('}{')
False
>>> is_valid('((')
False
>>> is_valid(')(')
False
总结
LeetCode-20. 有效的括号是一道经典的刷题题,也是算法练级中的一个重要内容。这道题要求判断给定字符串中的括号是否匹配。我们可以使用栈(stack)数据结构来解决这道题。通过使用栈,我们可以轻松地判断给定字符串中的括号是否匹配。
希望这篇文章对大家有所帮助。祝大家刷题愉快!