以下是一个示例代码,用于按照索引查找匹配括号的令牌。
def find_matching_bracket(tokens, index):
stack = []
for i, token in enumerate(tokens):
if token == "(":
stack.append(i)
elif token == ")":
if stack:
start_index = stack.pop()
if start_index == index:
return i
return None
tokens = ["(", "(", ")", ")", "(", ")"]
index = 0
matching_index = find_matching_bracket(tokens, index)
if matching_index is not None:
print(f"The matching bracket index for index {index} is {matching_index}.")
else:
print(f"No matching bracket found for index {index}.")
这个示例代码中,find_matching_bracket
函数接受一个令牌列表和一个索引作为参数,并使用堆栈来追踪遇到的左括号的索引。当遇到右括号时,它会检查堆栈中是否有左括号的索引,并将其弹出。如果弹出的索引与给定的索引相匹配,则返回当前右括号的索引。如果没有找到匹配的右括号,则返回None
。
在示例代码中,我们定义了一个令牌列表tokens
和一个索引index
,然后调用find_matching_bracket
函数来查找与给定索引匹配的右括号的索引。如果找到匹配的右括号,则打印出结果;否则,打印出未找到匹配括号的消息。