基于python判斷字符串括號(hào)是否閉合{}[]()
前言
經(jīng)典面試題: 判斷一個(gè)字符串里面的括號(hào)是否閉合,如:{{()}} 就是一個(gè)閉合的字符串。
{{()}]} 這個(gè)里面 ([)] 括號(hào)不對(duì)稱,這種就是不閉合。
python判斷閉合
解決基本思路:
先把左括號(hào)添加到一個(gè)列表里面,遇到右括號(hào)就彈出列表里面的最后一個(gè)存放進(jìn)去的。
對(duì)比右括號(hào)和彈出的左括號(hào)是否對(duì)稱,如果是就繼續(xù)依次對(duì)比。
最后判斷列表里面是否有多余的左括號(hào),如果列表為空,說(shuō)明全部被彈出,那就是閉合的
最后考慮下左括號(hào)和右括號(hào)有多余的情況
代碼如下
def is_str_close(a): ’’’ 遇到問(wèn)題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群 里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! 判斷括號(hào)是否閉合 ’’’ b = [] flag = True for i in a: if i == '{' or i == '[' or i == '(': # 左邊的括號(hào)加進(jìn)去 b.append(i) elif i == '}': # 遇到右邊括號(hào)}彈出最后面的一個(gè){ if len(b) == 0 or b.pop() != '{':return False elif i == ']': # 遇到右邊括號(hào)]彈出最后面的一個(gè)[ if len(b) == 0 or b.pop() != '[':return False elif i == ')': # 遇到右邊括號(hào))彈出最后面的一個(gè)( if len(b) == 0 or b.pop() != '(':return False # 判斷最后列表b里面的左邊括號(hào)是否全部被彈出 if len(b) != 0: flag = False return flagif __name__ == ’__main__’: a = '{[{()}]()}' print(is_str_close(a)) b = '({[{()}]()}' print(is_str_close(b)) c = '{[{()}]()}]' print(is_str_close(c))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python基于requests庫(kù)爬取網(wǎng)站信息2. vscode運(yùn)行php報(bào)錯(cuò)php?not?found解決辦法3. Python使用Selenium自動(dòng)進(jìn)行百度搜索的實(shí)現(xiàn)4. Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求5. 一文帶你徹底理解Java序列化和反序列化6. 微信小程序?qū)崿F(xiàn)商品分類頁(yè)過(guò)程結(jié)束7. PHP laravel實(shí)現(xiàn)導(dǎo)出PDF功能8. JS中6個(gè)對(duì)象數(shù)組去重的方法9. 資深程序員:給Python軟件開發(fā)測(cè)試的25個(gè)忠告!10. python中文本字符處理的簡(jiǎn)單方法記錄

網(wǎng)公網(wǎng)安備