📅  最后修改于: 2023-12-03 14:50:46.915000             🧑  作者: Mango
ISRO CS 2014 是印度国际空间研究组织的招聘考试。问题 12 是一个与字符串和逻辑运算相关的问题。
给定一个字符串 str
,编写一个函数 is_balanced(str)
来判断字符串中的括号是否平衡。如果字符串中的括号是平衡的,则返回 True
;否则返回 False
。
例如:
is_balanced("[()]{}{[()()]()}") # True
is_balanced("[(])") # False
函数 is_balanced
接受一个字符串 str
,其中包含了不同类型的括号。字符串的长度不超过 1000。
函数 is_balanced
返回一个布尔值,表示字符串中的括号是否平衡。
要判断一个字符串中的括号是否平衡,我们可以使用栈的数据结构来实现。
{
, [
, (
),将其推入栈中。}
, ]
, )
),从栈中弹出一个元素,并将其与当前右括号进行匹配。False
。True
;否则返回 False
。def is_balanced(str):
stack = [] # 创建一个空栈
for char in str:
if char in ['{', '[', '(']:
stack.append(char) # 左括号入栈
else:
if not stack: # 栈为空时,右括号没有与之匹配的左括号
return False
top = stack.pop() # 弹出栈顶元素
# 检查栈顶元素与当前右括号是否匹配
if (char == '}' and top != '{') or \
(char == ']' and top != '[') or \
(char == ')' and top != '('):
return False
return len(stack) == 0 # 检查栈是否为空
print(is_balanced("[()]{}{[()()]()}")) # True
print(is_balanced("[(])")) # False