先簡單回顧一下,今天預計分析的題目:
class Solution:
def isValid(self, s: str) -> bool:
# 先宣告一個 stack 盒子,之後專門存放左括號
stack_left = []
# 把變數 s 一個個讀字元,每一次讀的字元存在 chr 變數中
for chr in s:
# 若 chr 為左括號
if chr == "(" or chr == "[" or chr == "{":
stack_left.append(chr)
# 若 chr 不是左括號 (chr 為右括號)
else:
# 若 stack 內還有東西 (因為要拿一個 stack 盒子中的左括號,出來跟右括號比對是否為 same type)
if stack_left:
# stack 盒子拿出來的左括號放在 left 變數中
left = stack_left.pop()
# 接下來三個判斷式,依序判斷是否為 same type,一旦不是就直接回傳 False
if chr == ")" and left != "(":
return False
elif chr == "]" and left != "[":
return False
elif chr == "}" and left != "{":
return False
# 若都讀到右括號了,但是 stack 沒有左括號可以配對,那就直接回傳 False
else:
return False
# 判斷 stack 是否為空,stack若是空的 為 True
# stack 內有東西
if stack_left:
return False
# stack 內沒有東西了~
else:
return True
class Solution:
def isValid(self, s: str) -> bool:
stack_left = []
dict = {")": "(", "]": "[", "}": "{"}
for chr in s:
# 若 chr 為 左括號
if chr in dict.values():
stack_left.append(chr)
# 若 chr 為 右括號
elif chr in dict.keys():
# 若 stack 盒子是空的、沒有對應到 same type,回傳 False
if len(stack_left) == 0 or dict[chr] != stack_left.pop():
return False
else:
return False
return not stack_left