日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...

發(fā)布時間:2025/3/8 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法

數據結構

數據結構和算法(Python版):利用棧(Stack)實現括號的匹配問題

在平時寫程序當中,我們會經常遇到程序當中括號的匹配問題,也就是在程序當中左括號的數量和右括號的數量必須相等。如果不相等的話則程序必然會報錯。Hint:在讀取程序的時候,讀取的結果肯定是左邊的全是左括號,右邊的全是右括號,也就是一定是“(((( )))))”或者“((((((((((((( )))))))))))))))))”的形式,不可能是左右括號互相交互的形式,比如這種:“()()()()))((())((”, 編寫過程序的同學就能夠很輕松的知道這是為什么,因為先有左后有右,正好這個特性和棧的特性相符合,因此我們使用棧來解決這個問題,首先定義一個棧的類class:

classStack():def __init__(self):#初始化一個空的列表

self.__list=[]#壓棧,也就是把元素從上方添加上去,但是這里我咋感覺是從下方添加進去的,順序反了?

defpush(self,item):

self.__list.append(item)defpop(self):return self.__list.pop()#彈出棧頂的元素,同時刪除棧頂的元素

#返回棧頂的元素

defpeek(self):return self.__list[len(self.__list)-1]#也就是獲取列表當中的最后一個元素

#判斷棧是否為空

defis_empty(self):return self.__list ==[]#計算棧的大小

defsize(self):return len(self.__list)#返回當前棧的列表

defwhat(self):return self.__list

這也是棧最常見的定義,已經約定俗成了。現在則是算法的實現過程,我們可以用程序首先讀取括號,比如已經給定了括號的字符串“((((( )))))”,我們將這個字符串傳入進行括號匹配的函數當中。如果在循環(huán)讀取括號當中,讀取到了左括號,那么就進行入棧操作。之后左括號讀取完畢,再進行右括號的讀取操作,每讀取到一次右括號,則進行出棧操作,也就是將之前進棧的左括號刪除。如果左括號比右括號多,那么棧無論如何也無法為空,則括號不匹配,返回false。如果右括號比左括號更多,那么棧如果已經為空,程序還在讀取右括號,說明右括號比左括號更多,這樣程序則也返回false。在左括號和右括號的數量相等的時候,程序返回True,思路就是這樣的,因此程序的代碼如下:

defpipei(string):

stack=Stack()

i=0while i

stack.push(string[i])elif string[i]==")":ifstack.is_empty():returnFalseelif notstack.is_empty():

stack.pop()

i=i+1

ifstack.is_empty():returnTrueelse:returnFalseprint("開始括號的匹配問題:")print(pipei("(((())))"))print(pipei("(((()))))))))))"))

輸出為:

開始括號的匹配問題

True

False

那么真實的程序還需要我們自己寫一個讀取程序的文件,讓我們過濾掉其他符號,只提取出保留括號的字符串,我們這里再寫一個函數類實現這個功能:

deftiqukuohao(string):

i=0

ls=[]while i

ls.append(string[i])elif string[i]==")":

ls.append(string[i])else:passi=i+1new_string="".join(ls)#將拿到的列表變成字符串,十分常規(guī)的操作return new_string

然后調用函數,將一個括號匹配的放入函數,和另一個括號不匹配的字符串放入函數:

print(pipei(tiqukuohao("(sdvcsadc(asdasd(a)sdfsdf)asd)asdfas")))print(pipei(tiqukuohao("sdvcsadc(asdasd(a)sdfsdf)asd)asdfas")))

最后輸出為:

True

False

得解!

內容來源于網絡,如有侵權請聯(lián)系客服刪除

總結

以上是生活随笔為你收集整理的python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 高清不卡一区二区三区 | 五月激情天 | 国产视频欧美视频 | 神马伦理视频 | 丝袜美腿中文字幕 | 欧美多p | 国产在线精品播放 | 91 免费看片 | 亚洲人妻一区二区 | 亚洲hhh | 亚洲精品三| 青青视频免费在线观看 | 久草视频在线观 | 久热精品在线观看 | 欧美日韩欧美日韩在线观看视频 | 免费观看在线观看 | 欧美日韩一卡二卡 | av成人免费在线观看 | 99热在线这里只有精品 | 九九色精品 | 国产精品h| 老妇高潮潮喷到猛进猛出 | 亚洲性生活 | 日操干 | 日本网站免费 | 亚洲激情网站 | 久久无码人妻丰满熟妇区毛片 | 日本韩国欧美一区二区 | av中文字幕一区 | 久久综合婷婷 | 国产精品成人久久久久久久 | 日本一级三级三级三级 | 国产激情av一区二区三区 | 国产精品久久久久久av | 国产a自拍 | 激情六月婷 | 精品一区二区三区在线观看视频 | www在线视频 | 五月婷婷爱 | 成人国产一区二区三区精品麻豆 | 久久女女 | 欧美黄页在线观看 | 在线一区av | www.久久久.com| 中文在线观看av | 日本高清中文字幕 | 精品在线观看一区二区 | 免费美女av| 亚欧成人在线 | 岛国伊人 | 亚洲欧美一区二区在线观看 | 久久久久久蜜桃一区二区 | 美女超碰在线 | 1515hh成人免费看 | 少妇肥臀大白屁股高清 | 欧美日韩精品中文字幕 | 俺去操| 国产成人精品网 | 亚洲综合欧美综合 | 丁香婷婷久久久综合精品国产 | 久久久77 | 黄色刺激视频 | 国产福利一区在线观看 | 中文字幕女优 | 91香蕉国产 | 天天综合av | 狠狠五月天 | 黄色av网站免费观看 | 免费av在线网址 | 毛片视频网址 | 毛片毛片毛片毛片毛片 | 91精产品一区观看 | 国产自在线拍 | 亚洲色图图片 | 欧美日韩一区二区不卡 | 欧美午夜在线观看 | 俺来也av| 阿v免费视频 | wwwxxx日韩| 国产综合一区二区 | 国产精欧美一区二区三区白种人 | 日本在线免费观看视频 | 国产原创在线观看 | 高潮毛片7777777毛片 | 爱逼av | 国产91清纯白嫩初高中在线观看 | jjzz日本女人 | 国产亚洲欧美日韩精品 | 五月天免费网站 | 疯狂做受xxxx高潮人妖 | 日韩有码电影 | 艳母日本动漫在线观看 | 日本少妇裸体做爰高潮片 | 狠狠躁| 国产成人亚洲精品无码h在线 | 玖玖玖精品 | 亚洲激情中文 | 特级淫片裸体免费看 | 亚洲av永久一区二区三区蜜桃 |