題目
給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。有效字符串需滿足以下要求:
1,左括號必須用相同類型的右括號閉合。
2,左括號必須以正確的順序閉合。
3,注意空字符串可被認為是有效字符串。
例如,"{[{()}]()}"就是一個閉合的有效字符串。
實現思路
這里我們運用 棧
里面 先進后出
的思想來處理問題。
- 遍歷字符串中的每一個括號
- 定義一個空列表,如果遇到左括號,就存儲到列表中
- 如果遇到右括號,判斷列表是否為空,不為空就彈出列表中最后一個左括號,並判斷右括號和彈出的左括號是否匹配,不匹配則返回 False
- 如果遇到右括號,且列表為空,那么也就表示列表中沒有匹配的括號,則直接返回 False
- 遍歷結束,最后再判斷列表是否為空,不為空則表示左/右括號有多余的,返回 False ; 為空則表示是閉合的有效字符串,返回 True
代碼實現:
s = '[sfddsf]{kohij]k}' def isValid(s): stack = [] for char in s: if char == '[' or char == '{' or char == '(': stack.append(char) if char == ']': if len(stack)==0 or stack.pop()!='[': return False if char == '}': if len(stack)==0 or stack.pop()!='{': return False if char == ')': if len(stack)==0 or stack.pop()!='(': return False return True if len(stack)==0 else False print(isValid(s))