括號匹配說明
算法思路
- 從左到右遍歷字符串
- 如果不是括號浑厚,默認是有效字符,遍歷下一個字符
- 如果是左括號图张,左括號進入棧赊琳,遍歷下一個字符
- 如果是右括號
- 當前棧是否還有左括號
- 沒有則匹配失敗
- 有,出棧比較是否匹配
- 如果出棧的字符和當前字符匹配為一對括號廉邑,遍歷下一個
- 不匹配哥蔚,則匹配失敗
- 遍歷完畢后,判斷棧中是否還有剩余左括號
- 沒有蛛蒙,匹配成功
- 有糙箍,說明有多余左括號,匹配失敗
python代碼
def is_encode(str):
# 放左右括號的棧
bracket = '()'
open_brackets = []
close_brackets = [')']
# 見一個右括號就出一個左括號
for i in range(len(str)):
si = str[i]
# 如果不是括號牵祟,下一個
if bracket.find(si) == -1:
continue
# 如果是左括號就入棧
if si == '(':
open_brackets.append(si)
continue
# 走下下面說明就是右括號了深夯,因為上面已經(jīng)排除了不是字母和左括號了
if len(open_brackets) == 0:
# 現(xiàn)在來了個右括號,但是沒有匹配的了
return False
#上面排除了各種情況,現(xiàn)在開始正常匹配了
p = open_brackets.pop()
if p =='(' and si ==')':
continue
else:
return False
#判斷是否還有多余的左括號呀
if len(open_brackets) > 0:
return False
return True