#!/usr/bin/env python
# -*- coding: utf-8 -*-#
# 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
#
# 有效字符串需满足:
#
#
# 左括号必须用相同类型的右括号闭合。
# 左括号必须以正确的顺序闭合。
#
#
#
#
# 示例 1:
#
#
# 输入:s = "()"
# 输出:true
#
#
# 示例 2:
#
#
# 输入:s = "()[]{}"
# 输出:true
#
#
# 示例 3:
#
#
# 输入:s = "(]"
# 输出:false
#
#
# 示例 4:
#
#
# 输入:s = "([)]"
# 输出:false
#
#
# 示例 5:
#
#
# 输入:s = "{[]}"
# 输出:true
#
#
#
# 提示:
#
#
# 1 <= s.length <= 104
# s 仅由括号 '()[]{}' 组成
#
# Related Topics 栈 字符串
# 👍 2377 👎 0
# leetcode submit region begin(Prohibit modification and deletion)
class Solution(object):
def isValid(self, s):
stack = []
for i in s:
if i in ['(','[','{']:
stack.append(i)
else:
if len(stack) == 0:
return False
else:
temp = stack.pop()
if i == ')':
if temp != '(':
return False
if i == ']':
if temp != '[':
return False
if i == '}':
if temp != '{':
return False
if len(stack) == 0:
return True
else:
return False
# leetcode submit region end(Prohibit modification and deletion)
主要用栈来做成对match,但是因为要成对,所以多加一层if进行逻辑映射判断。另外,要考虑左符号的结果如果是0则说明没有成对括号的情况,所以也是失败的。
主体逻辑框架 左符入栈先保存现场 判断是否有左符号现场 遇到右符合,Pop左符合现场进行成对match