棧中常見問題 如何根據入棧序列判斷可能出棧序列

2021-10-09 02:02:20 字數 1425 閱讀 7783

問題二 如何根據入棧序列判斷可能出棧序列

如入棧的子串行是,那麼出棧的順序有可能是麼?

當然可以啦,我們這麼想,首先,棧是先進後出,一般先出棧頂的元素。那麼我們依次將輸入序列入棧,並判斷入棧以後的棧頂元素是否等於出棧序列的第乙個元素,那麼就將入棧的元素pop出。最後,看入棧的所有元素是否已經pop出。並且出棧的序列是否全部劃過。

class

stack()

:def

__init__

(self)

: self.items=

defis_empty

(self)

:return

len(self.items)==0

defpop

(self)

:if self.is_empty():

return

none

else

: self.items.pop(

)def

peek

(self)

:if self.is_empty():

return

none

else

:return self.items[

len(self.items)-1

]def

push

(self,data)

:def

isserial

(push,pop)

:if push==

none

or pop==

none

:return

false

pushlen=

len(push)

poplen=

len(pop)

if pushlen!=poplen:

return

false

pushindex=

0 popindex=

0 s=stack(

)while pushindexs.push(push[pushindex]

) pushindex+=

1while

(not s.is_empty())

and(s.peek(

)==pop[popindex]):

s.pop(

) popindex+=

1return s.is_empty(

)and popindex==poplen#####這裡是因為popindex+=1所以是popindex==poplen

if __name__==

"__main__"

: push=

"12345"

pop=

"32541"

isserial(push,pop)

如何根據入棧序列判斷可能的出棧序列

tx面試題 題目描述 輸入兩個整數序列,其中乙個序列表示棧的push 入 序列,判斷另乙個序列有沒有可能是對應的pop 出 序列。解答 假如輸入的push序列是 1 2 3 4 5,那麼3 2 5 4 1就可能是乙個pop序列,但是5 3 4 1 2就不可能是它的乙個pop序列了。構造乙個棧 cla...

棧問題 根據入棧序列,得出可能的出棧序列

根據入棧序列,得出可能的出棧序列 例如 輸入 a b 輸出 a進a出b進b出 ab a進b進b出a出 ba 輸入 a b c 輸出 a進a出b進b出c進c出 abc a進a出b進c進c出b出 acb a進b進c進c出b出a出 cba a進b進b出c進c出a出 bca a進b進b出a出c進c出 bac...

根據入棧順序判斷出棧序列正確與否

題目 鐵路的排程站如下 火車編號為 1 9,且不重複。如 編號分別為 1 2 3 4 5 的5個火車順序進站,那麼進站序列為 12345 全部進站後再順序出站,則出站序列為 54321 如果先進1,2,然後2出站,然後1出站,然後再3進站 出站,4進站 出站,5進站 出站,那麼出站序列就為21345...