Python檢測字串中的括號是否有效
阿新 • • 發佈:2018-11-22
Python檢測字串中的括號是否是有效括號
()\[]\{} 返回True
([{}]) 返回True
([)] 返回false
(){}[] 返回True
((]) 返回false
用這個用棧可以解決,程式碼如下:
def check_brace(str_raw):
# 如果傳入為空,直接返回True
if str_raw == "":
return True
# 定義一個空列表,模擬棧。
stack = []
while str_raw != "":
# 獲取本次迴圈的字串的第一個字元
thisChar = str_raw[0]
# ^_^去掉第一個元素
str_raw = str_raw[1:]
# 如果本次迴圈的第一個字元是左括號,將其壓棧
if thisChar == "(" or thisChar == "{" or thisChar == "[":
stack.append(thisChar)
# 如果本次迴圈的第一個字元是右括號,檢測棧是否為空,棧長為空表示棧內沒有可以匹配的左括號,返回false
# 如果棧長不為空,且棧內最後一個元素是相匹配的左括號,此次匹配成功,將其彈出,進入下一輪迴圈。
elif thisChar == ")" or thisChar == "}" or thisChar == "]":
# 提高效率
len_stack = len(stack)
if len_stack == 0:
return False
else:
if thisChar == ")" and stack[ len_stack - 1] == "(":
stack.pop(len_stack - 1)
elif thisChar == "]" and stack[len_stack - 1] == "[":
stack.pop(len_stack - 1)
elif thisChar == "}" and stack[len_stack - 1] == "{":
stack.pop(len_stack - 1)
else:
return False
# 迴圈結束,如果棧為空,則表示全部匹配完成
if stack == []:
return True
else:
return False
print(check_brace('(){}[]'))
努力學習資料結構。。。