擅长:python、mysql、java
<p>你的错误是:</p>
<ul>
<li>使用索引0和-1代替i</li>
<li>比较左括号和右括号</li>
</ul>
<p>所以,我的解决方案是:</p>
<pre><code>def check(li):
length = len(li)
if length % 2 == 0:
pairs = {'}': '{', ']': '[', ')': '('}
stack = []
for i in range(length):
if li[i] in pairs.values():
stack.append(li[i])
elif li[i] in pairs.keys() and stack[-1] == pairs[li[i]]:
stack.pop()
return len(stack) == 0
else:
return False
</code></pre>
<p>我使用堆栈作为开始括号,如果它找到结束括号,它将弹出堆栈。最后,检查堆栈是否被清除。你知道吗</p>
<p>使用测试用例测试结果</p>
<pre><code>li1 = ['{','[','(',')',']','}' ]
check(li1)
>>> True
li2 = ['[','(',')',']']
check(li2)
>>> True
li3 = ['{','[','(',']',')','}']
check(li3)
>>> False
</code></pre>