# 給出一個(gè)僅包含字符'(',')','{','}','['和']',的字符串,判斷給出的字符串是否是合法的括號(hào)序列 # 括號(hào)必須以正確的順序關(guān)閉:"()"和"()[]{}"都是合法的括號(hào)序列,但"(]"和"([)]"不合法。 # 左括號(hào)必須用相同類(lèi)型的右括號(hào)閉合。 # 左括號(hào)必須以正確的順序閉合。 # 注意空字符串可被認(rèn)為是有效字符串。 ''' 思路:利用列表的append()和pop()函數(shù)實(shí)現(xiàn)棧先進(jìn)后出的邏輯。 1、遍歷輸入字符串 2、如果當(dāng)前字符為左半邊括號(hào)時(shí),則將其壓入棧中 3、如果遇到右半邊括號(hào)時(shí),分類(lèi)討論: ????????a)若此時(shí)棧為空,則直接返回false ????????b)若棧頂元素不為對(duì)應(yīng)的左半邊括號(hào),返回false ????????c)若棧不為空且為對(duì)應(yīng)的左半邊括號(hào),則取出棧頂元素,繼續(xù)循環(huán) '''?
class StrVaild:
def isvaild(self,str):
stack = []
for item in str:
if item == '(' or item == '[' or item == '{':
stack.append(item)
else:
if stack == []:
return False
elif item == ')' and stack.pop()!='(':
return False
elif item == ']' and stack.pop()!='[':
return False
elif item == '}' and stack.pop()!='{':
return False
return stack == []
sv=StrVaild()
print(sv.isvaild('['))
print(sv.isvaild('()'))
print(sv.isvaild('[)]'))
print(sv.isvaild('()[]{}'))
print(sv.isvaild('([)]'))
print(sv.isvaild('[()[]]'))
print(sv.isvaild('[([()])]'))
執(zhí)行結(jié)果:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-409847.html
False
True
False
True
False
True
True文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409847.html
到了這里,關(guān)于Python實(shí)現(xiàn)字符串是否合法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!