[问题] leecode20. Valid Parentheses

楼主: Kuba4ma (哦吼)   2020-03-16 00:38:03
题目:
Given a string containing just the characters '(', ')', '{', '}', '[' and
']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
code:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack=list()
length=len(s)
if length%2!=0:
return False
else:
for i in range(length):
if "(" or "{" or "[" == s[i]:
stack.append(s[i])
elif ")" == s[i]:
if stack.pop() != "(":
return False
elif "}" == s[i]:
if stack.pop() != "{":
return False
elif "]" == s[i]:
if stack.pop() != "[":
return False
if len(stack)!=0:
return False
else:
return True
input是"()"会跑出False
不知道哪里出了问题
作者: Hsins (翔)   2020-03-16 00:48:00
len("()") = 2
作者: TitanEric (泰坦)   2020-03-16 00:52:00
建议判断list是不是空的改成 if list,这表示存在
作者: Hsins (翔)   2020-03-16 01:05:00
问题在你的 or 那边if "(" or "{" or "[" == s[i]:判断的是 if "(", if "{" 和 if "[" == s[i]前两个永远都是 true你写的其他条件根本不会走进去
作者: alvinlin (林矜业)   2020-03-16 12:30:00
这应该用堆叠做吧左向括号push右向popPop前确定是同对等的括号原来已经用堆叠做了。My bad
作者: lericee (艾瑞克)   2020-03-16 23:50:00
H大已讲 or的两边True会进if 你or的两边是什么可以改成s[i] in ['[','{','(']
楼主: Kuba4ma (哦吼)   2020-03-18 17:43:00
谢谢H大 已解决

Links booklink

Contact Us: admin [ a t ] ucptt.com