1、題目描述
給定一個只包括?'('
,')'
,'{'
,'}'
,'['
,']'
?的字符串?s
?,判斷字符串是否有效。
有效字符串需滿足:
- 左括號必須用相同類型的右括號閉合。
- 左括號必須以正確的順序閉合。
- 每個右括號都有一個對應的相同類型的左括號。
示例 1:
????????輸入:s = "()"
????????輸出:true
示例 2:
????????輸入:s = "()[]{}"
????????輸出:true
示例 3:
????????輸入:s = "(]"
????????輸出:false
2、初始思路
2.1 思路
對于左括號“([{“直接將其加入stack中,在檢測到右括號時判斷其是否有對應的正確的左括號,如果有,則彈出左括號,如果沒有,則說明字符串是無效的,可以直接返回False.
2.2 代碼
class Solution:def isValid(self, s: str) -> bool:stack = []if not s:return Trueif len(s) % 2 != 0:return Falsefor i in s:if not stack or i == '(' or i == '[' or i == '{':stack.append(i)elif i == ')' and stack[-1] == '(':stack.pop()elif i == ']' and stack[-1] == '[':stack.pop()elif i == '}' and stack[-1] == '{':stack.pop()else:return Falseif not stack:return Trueelse:return False