📅  最后修改于: 2023-12-03 15:11:33.138000             🧑  作者: Mango
在编程中,我们经常需要检查代码中的括号是否匹配。如果出现不匹配的情况,程序就可能会崩溃或者出现意想不到的错误。因此,编写一个算法检查括号的平衡性是非常必要的。
我们可以使用栈来检查括号的平衡性。具体做法是,从左到右遍历每个括号,在遍历的过程中,如果是左括号,我们就将其压入栈中;如果是右括号,我们就从栈中弹出一个左括号,并比较它们是否匹配。如果不匹配,就说明括号不平衡,反之则平衡。
总体思路如下:
下面是具体的代码实现:
def is_balanced_parentheses(s):
stack = []
for c in s:
if c == '(' or c == '[' or c == '{':
stack.append(c)
elif c == ')' and (not stack or stack.pop() != '('):
return False
elif c == ']' and (not stack or stack.pop() != '['):
return False
elif c == '}' and (not stack or stack.pop() != '{'):
return False
return not stack
让我们使用一些示例字符串来测试我们的算法:
print(is_balanced_parentheses('()'))
# Output: True
print(is_balanced_parentheses('({[]})'))
# Output: True
print(is_balanced_parentheses('({[}])'))
# Output: False
print(is_balanced_parentheses('{{}'))
# Output: False
该算法的时间复杂度为O(n),其中n为字符串长度。我们需要遍历字符串中的每个字符,因此算法的时间复杂度与字符串长度呈线性关系。
该算法的空间复杂度也为O(n),其中n为字符串长度。在最坏的情况下,我们需要将所有左括号压入栈中,因此栈的大小与字符串长度呈线性关系。
在编程中,检查括号的平衡性是一个非常基本的需求。我们可以使用栈来实现该功能,算法的思路非常直观并且易于理解。