使用堆栈检查表达式(格式良好)中的平衡括号的Python程序
给定一个表达式字符串exp,编写一个程序来检查 exp 中“{“, “}”, “(“, “)”, “[”, “]” 的对和顺序是否正确。
示例:
Input: exp = “[()]{}{[()()]()}”
Output: Balanced
Input: exp = “[(])”
Output: Not Balanced
算法:
- 声明一个字符栈 S。
- 现在遍历表达式字符串exp。
- 如果当前字符是起始括号( '(' 或 '{' 或 '[' ),则将其推入堆栈。
- 如果当前字符是右括号( ')' 或 '}' 或 ']' ),则从堆栈中弹出,如果弹出的字符是匹配的起始括号,则可以,否则括号不平衡。
- 完全遍历后,如果堆栈中还有一些起始括号,则“不平衡”
下图是上述方法的试运行:
下面是上述方法的实现:
Python3
# Python3 program to check for
# balanced brackets.
# function to check if
# brackets are balanced
def areBracketsBalanced(expr):
stack = []
# Traversing the Expression
for char in expr:
if char in ["(", "{", "["]:
# Push the element in the stack
stack.append(char)
else:
# IF current character is not opening
# bracket, then it must be closing.
# So stack cannot be empty at this point.
if not stack:
return False
current_char = stack.pop()
if current_char == '(':
if char != ")":
return False
if current_char == '{':
if char != "}":
return False
if current_char == '[':
if char != "]":
return False
# Check Empty Stack
if stack:
return False
return True
# Driver Code
if __name__ == "__main__":
expr = "{()}[]"
# Function call
if areBracketsBalanced(expr):
print("Balanced")
else:
print("Not Balanced")
# This code is contributed by AnkitRai01 and improved
# by Raju Pitta
输出
Balanced
时间复杂度: O(n)
辅助空间:堆栈的 O(n)。
有关更多详细信息,请参阅有关使用 Stack 的表达式(格式良好)检查平衡括号的完整文章!