我有很多括号,比如
li1 = ['{','[','(',')',']','}' ] # correctly paired
li2 = ['[','(',')',']'] # correctly paired
li3 = ['{','[','}',']',')','}'] # incorrectly paired
如何使用for循环比较第一个元素和最后一个元素,然后比较下一个元素和最后一个元素?你知道吗
我的解决办法是
if len(li) %2 == 0:
for i in range(len(li)):
if li[0] == li[-1]: #and if li[1] == li[-2]: and so on.....
return True
else:
return False
else:
return False
但是这会为li3
返回错误的结果。你知道吗
你的错误是:
所以,我的解决方案是:
我使用堆栈作为开始括号,如果它找到结束括号,它将弹出堆栈。最后,检查堆栈是否被清除。你知道吗
使用测试用例测试结果
您在代码中犯了3个错误:
i
计数器,因此循环只测试第一个和最后一个元素'[' == ']'
永远不会是真的,但是配对是正确的。你知道吗我不需要使用计数器,使用^{} 和^{} 从开始到结束对元素进行配对;您只需要测试
li
的前半部分:演示:
然而,对嵌套的单个维度进行测试通常是不够的。大多数实际情况都包含多个分组,比如
['(', '{', '}', '[', ']', ')']
(注意{
、}
和[
,]
对不是嵌套的!)。如果需要匹配这种情况,则需要使用堆栈:这样仍然可以正确地检测您的案例,*但也会返回
True
作为我的反例:相关问题 更多 >
编程相关推荐