您的位置:首页 > 其它

leetcode刷题之 20. 有效的括号

2019-06-25 16:17 246 查看

leetcode刷题之 20. 有效的括号

  • 题目
    给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

  • 示例 :
    示例 1:
    输入: “()”
    输出: true
    示例 2:
    输入: “()[]{}”
    输出: true
    示例 3:
    输入: “(]”
    输出: false
    示例 4:
    输入: “([)]”
    输出: false
    示例 5:
    输入: “{[]}”
    输出: true

  • 代码1:

class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
for i in range(len(s)):
s=s.replace("()",'')
s=s.replace("[]",'')
s=s.replace("{}",'')
return s == ""
# 执行用时 : 84 ms, 在Valid Parentheses的Python提交中击败了2.41% 的用户
# 内存消耗 : 11.8 MB, 在Valid Parentheses的Python提交中击败了2.24% 的用户
  • 算法说明:
    直接判断括号的匹配,然后删除,即判断是否存在“()”、“[ ]”、“{}”,如果存在直接删除,判断最后是否为空!
  • 代码2:
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
s = list(s)
a = [0]
if s == []:
return True
if s[0] == ']' or s[0] == ')' or s[0] == '}':
return False
for i in range(len(s)):
if s[i] == '(' or s[i] == '[' or s[i] == '{':
a.append(s[i])
continue
if s[i] == ')' and a[-1] == '(':
a.pop()
continue
if s[i] == ')' and a[-1] != '(':
return False
if s[i] == ']' and a[-1] == '[':
a.pop()
continue
if s[i] == ']' and a[-1] != '[':
return False
if s[i] == '}' and a[-1] == '{':
a.pop()
continue
if s[i] == '}' and a[-1] != '{':
return False
return  len(a) == 1
# 执行用时 : 36 ms, 在Valid Parentheses的Python提交中击败了16.72% 的用户
# 内存消耗 : 11.8 MB, 在Valid Parentheses的Python提交中击败了2.24% 的用户
  • 算法说明:
    利用栈的思想判断,( )、{ }、[ ]。左括号入栈,右括号出栈!最后判断栈是否为空!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: