双端队列:双端队列与队列类似,其两端可以被称作是队首和队尾,但是它的数据项的添加和删除都可以在两端完成,既可以在队首添加删除,又可以在队尾添加删除,从某种意义上来说,双端队列集成了栈和队列的能力。
class Deque():
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def size(self):
return len(self.items)
def addFront(self,item):
return self.items.append(item)
def addRear(self,item):
return self.items.insert(0,item)
def removeFront(self):
return self.items.pop()
def removeRear(self):
return self.items.pop(0)
a=Deque()#创建类的时候一定不要忘了后面的括号
应用:回文词的判断,回文词就是正读反读都一样的词
from pythonds.basic.deque import Deque
def huiwen(word):
ishuwen=True
chardeque = Deque()#首先要创建一个新的双端队列
for ch in word:#其次要把字符串中的每一个字符逐个地添加到空的双端队列中而不能直接把字符串添加到空的双端队列中
chardeque.addRear(ch)
while chardeque.size()>1 and ishuwen:#之所以在大于一的时候就停止,是因为防止有奇数个词的时候出现
shou=chardeque.removeFront()
mo=chardeque.removeRear()
if shou!=mo:
ishuwen=False
return ishuwen
print(huiwen('12321'))