1. 程式人生 > >Python檢測字串中的括號是否有效

Python檢測字串中的括號是否有效

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('(){}[]'))

努力學習資料結構。。。