python實現棧和棧的括號匹配

2021-09-24 06:23:09 字數 1480 閱讀 9496

棧(stack)資料結構只允許在一端進行操作,可以在一端(棧頂)進行出棧和入棧,而在另一端(棧底)不能進行操作,並且後進先出。

當順序表和煉表只能在一端進行操作(頭或尾)時,順序表和煉表會變成棧。

棧可以用順序表實現也可以用鍊錶實現。

棧與順序表的區別:

棧資料結構描述的是操作,順序表和煉表描述的是資料如何存放。

使用列表入棧和出棧為什麼在尾部?

在頭部的話時間複雜度為o(n),在尾部的話時間複雜度為o(1)。

使用單鏈表進行出棧和入棧操作需要在頭部進行,因為在尾部的話時間複雜度將變為o(n)。

def size(self):

#返回棧元素個數

return len(self.__list)

if __name__ == '__main__':

#當函式沒有返回值的時候預設返回none

s = stack()

s.push(1)

s.push(2)

s.push(3)

print(s.pop())

print(s.pop())

print(s.pop())

有效括號字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

def balanced_parentheses(parentheses):

stack = stack(len(parentheses))

for parenthesis in  parentheses:

if parenthesis == "(":

stack.push(parenthesis)

elif parenthesis == ")":

if stack.is_empty():

return false

stack.pop()

return stack.is_empty()

if __name__ == '__main__':

# s = stack(2)

# s.push(1)

# s.push(2)

# up_data=s.peek()

# print(up_data)

# print(s.is_empty())

# print(s.size())

examples = ["((()))","((())","(()))"]

for example in examples:

print(example + ":" + str(balanced_parentheses(example)))

棧,有效的括號(Python實現)

給定乙個只包括 的字串,判斷字串是否有效。將字串從前向後 從後向前也可 依次取出,若取出的字元與棧頂元素可以組成有效的括號,則彈出棧頂元素,否則將該字元壓入棧頂。字元全部取出後若棧為空,則字串有效,反之無效。class solution object defisvalid self,s type s...

棧和佇列 用棧實現括號匹配

一 棧匹配 思路 借助棧來實現括號的匹配,如果碰到的是三種左括號的話,將左括號進行入棧,以為需要匹配到括號肯定都是右括號於左括號進行匹配的,所以遇到左括號直接入棧就可以了。如果遇到右括號,需要進行匹配,如果目前棧中為空的話,直接返回false,因為這個括號很明顯的多出來了。如果不為空,將棧中的乙個元...

用棧實現括號匹配 python

python資料結構與演算法分析 第二版 用python實現棧,檔名為pystack.py user bin env python coding utf 8 假設列表尾部是棧頂端o 1 class stack def init self self.items defisempty self 判棧空 ...