📅  最后修改于: 2023-12-03 15:42:21.956000             🧑  作者: Mango
这是门|门 IT 2007 年的第 69 题,是一道经典的编程题目。它可以帮助程序员提高自己的编程能力和算法思维,同时也挑战着程序员的耐心和坚韧性。
你有一个字符串,其中包含若干个括号,包括圆括号 ()
、方括号 []
和大括号 {}
。现在,你需要编写一个函数,判断这些括号是否是合法的,即它们是否满足以下条件:
例如,字符串 ()[]{}
是合法的,而字符串 ([)]
则是不合法的。
具体来说,你需要完成以下任务:
bool is_valid(string s)
,其中 s
是一个只包含括号的字符串,函数返回一个布尔值,表示这些括号是否是合法的;下面是一个示例的 Python 实现:
def is_valid(s: str) -> bool:
stack = []
match = {')': '(', ']': '[', '}': '{'}
for ch in s:
if ch in match:
if not stack or stack.pop() != match[ch]:
return False
else:
stack.append(ch)
return not stack
这段代码实现了一个使用栈数据结构的算法来判断括号是否合法。具体来说,我们遍历字符串的每一个字符,对于每一个右括号,如果栈为空或者栈顶元素不等于对应的左括号,则说明括号不合法;否则,我们从栈中弹出栈顶元素,继续遍历。对于每一个左括号,我们将其压入栈中,等待右括号的出现。最终,如果栈为空,则说明所有的括号都已经匹配完毕,括号是合法的;否则,括号是不合法的。
算法和数据结构是计算机科学的核心内容之一,可以帮助我们高效地解决实际问题。编程题目是锻炼自己编程能力和算法思维的绝佳途径。通过挑战这些题目,我们可以提高自己的编程技能,锻炼自己的耐心和坚韧性,同时也可以对计算机科学的核心内容有更深入的理解。