Leetcode 20.有效的括號(Python3)
阿新 • • 發佈:2018-12-14
20.有效的括號
給定一個只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
- 左括號必須用相同型別的右括號閉合。
- 左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: "()"
輸出: true
示例 2:
輸入: "()[]{}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
示例 4:
輸入: "([)]"
輸出: false
示例 5:
輸入: "{[]}" 輸出: true
思想:使用棧
自己的程式碼:
#valid-parentheses class Solution: def isValid(self, s): li = ['(',')','{','}','[',']'] dic = {'(':')','{':'}','[':']'} res = '' for i in s: if i in li: res += i if len(res) % 2 != 0: return False stack = [] for i in res: if i in dic: stack.append(i) else: if stack == [] or dic[stack.pop()] != i: return False if stack != []: return False return True if __name__ == '__main__': print(Solution().isValid("(("))
執行時間:60 ms
PS:
其中還應該判斷是否為空:
if len(res) % 2 != 0 or len(res) == 0
所以就改成了 :
f len(res) % 2 != 0
大神的寫法:
class Solution(object): def isValid(self, s): d = {')': '(', ']': '[', '}': '{'} stack = [None] for i in s: if i in d and d[i] == l[-1]: stack.pop() else: stack.append(i) return len(stack) == 1
執行時間:44 ms
連結:
https://leetcode-cn.com/problems/valid-parentheses/description/