返回

算法练级 - 刷题之旅:LeetCode-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)数据结构来解决这道题。通过使用栈,我们可以轻松地判断给定字符串中的括号是否匹配。

希望这篇文章对大家有所帮助。祝大家刷题愉快!