劍指Offer Python 棧的壓入 彈出序列

2021-08-22 09:59:43 字數 1956 閱讀 7093

題目:棧的壓入、彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

思路:定義乙個列表l,用來存放當前棧中的元素。

1)判斷popv[0]是否在pushv中,如果在則求出其在pushv中的索引c_index。否則返回false;

2)將pushv[:c_index]壓入棧l。

3)pre_index = c_index,對popv[1:]進行遍歷:

a.如果當前值正好是棧l的棧頂,則出棧,繼續遍歷;

b.求出當前遍歷元素的索引c_index,如果c_index > pre_index+1,則將pushv[pre_index+1:c_index]壓入l,繼續遍歷;

c.否則return false

4)遍歷結束,return true。

**

# -*- coding:utf-8 -*-

class

solution:

defispoporder

(self, pushv, popv):

# write code here

if popv is

none:

return

none

pop_num = 0

try:

c_index = pushv.index(popv[0])

except valueerror:

return

false

l = pushv[:c_index]

for i in range(1, len(popv)):

pre_index = c_index

if popv[i] == l[-1]:

l.pop(-1)

pop_num += 1

continue

try:

c_index = pushv.index(popv[i])

except valueerror:

return

false

if c_index > pre_index:

if pre_index + 1 != c_index:

l.extend(pushv[pre_index+1:c_index])

else:

return

false

return

true

版本二;

# -*- coding:utf-8 -*-

class

solution:

defispoporder

(self, pushv, popv):

stack =

while popv:

# 如果pushv不空,且與popv頭元素都相同,則出棧

if pushv and pushv[0] == popv[0]:

pushv.pop(0)

popv.pop(0)

# 如果不滿足前面的條件,判斷stack是否為空,不為空則判斷stack[-1]與popv[0]是否相等,相等則出棧。

elif stack and stack[-1] == popv[0]:

popv.pop(0)

stack.pop(-1)

# 如果pushv不空則,stack入棧

elif pushv:

# 最後說明pushv為空,且stack[-1]與popv[0]不相同,則出棧序列有誤,返回false

else:

return

false

return

true

劍指offer(Python)替換空格

這道題要求是 將乙個字串中的空格替換成 20 有多少個空格就替換成多少個 20 例如 hello world 中間有兩個空格,則需要輸出的形式是 hello 20 20world 字串首尾的空格亦算在內。class solution def replacespace self,s return 20...

劍指offer Python 替換空格

請實現乙個函式,將乙個字串中的每個空格替換成 20 python字串,有replace方法,可以實現替換,第乙個引數是要替換的內容,第二個引數是替換的新內容 能夠快速完成,果然python作為一種高階語言,不太適合做演算法 但是 replace 相當於 insert 在替換 時,會將原字串元素的位置...

《劍指offer》python 動態規劃

動態規劃是利用空間去換取時間的演算法.主要看 1.初始條件 2.重疊子問題 3.狀態轉移方程 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 coding utf 8 class solution def jumpfloo...