問題二 如何根據入棧序列判斷可能出棧序列
如入棧的子串行是,那麼出棧的順序有可能是麼?
當然可以啦,我們這麼想,首先,棧是先進後出,一般先出棧頂的元素。那麼我們依次將輸入序列入棧,並判斷入棧以後的棧頂元素是否等於出棧序列的第乙個元素,那麼就將入棧的元素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...