此问题可以用栈的数据结构来解决。我们可以遍历用户输入的括号和方括号,并使用栈来存储每个打开括号,如果在栈未空的情况下,我们相遇了关闭括号,并且该关闭括号与栈的顶部打开括号匹配,则这些括号嵌套正确。否则,它是不正确的。
下面是一个Python代码示例来实现此功能:
def is_properly_nested(symbols):
stack = []
opening = set('([{') # 打开的括号字符集
# 遍历每个括号字符
for symbol in symbols:
if symbol in opening: # 如果是打开的括号,则将其推入栈中。
stack.append(symbol)
else:
if not stack: # 如果我们遇到了关闭括号,而不是打开括号,则不正确
return False
if symbol == ')' and stack[-1] == '(' or \
symbol == ']' and stack[-1] == '[' or \
symbol == '}' and stack[-1] == '{': # 匹配括号
stack.pop() # 如果匹配,则弹出该括号
else:
return False # 否则,不正确
return not stack # 如果栈为空,则表示所有嵌套正确,否则表示不正确
我们可以使用上面的函数来测试用户输入的括号字符串。例如,
symbols = input("请输入括号字符串:")
if is_properly_nested(symbols):
print("这个字符串的括号是嵌套正确的")
else:
print("这个字符串的括号是嵌套不正确的")
当用户输入'({} [])”,将输出'这个字符串的括号是嵌套正确的”