deque(也称为双端队列)是与队列类似的项的有序集合。它有两个端部,首部和尾部,并且
项在集合中保持不变。deque 不同的地方是添加和删除项是非限制性的。可以在前面或后面
添加新项。同样,可以从任一端移除现有项。在某种意义上,这种混合线性结构提供了单个
数据结构中的栈和队列的所有能力。
deque 抽象数据类型由以下结构和操作定义。下面给出了 deque 操作。
Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。
addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。
addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。
removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。
removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。
isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。
size() 返回 deque 中的项数。它不需要参数,并返回一个整数。
class Deque:
def __init__(self):
self.items = []
def addfront(self,item):
self.items.append(item)
def addrear(self,item):
self.items.insert(0,item)
def removefront(self):
return self.items.pop()
def removerear(self):
return self.items.pop(0)
def isempty(self):
return self.items == []
def size(self):
return len(self.items)
def palchecker(astring):
chardeque = Deque()
for s in astring:
chardeque.addrear(s)
stillequal = True
while chardeque.size() > 1 and stillequal :
first = chardeque.removefront()
last = chardeque.removerear()
if first != last :
stillequal = False
return stillequal
print(palchecker("lsdkjfskf"))
print(palchecker("radar"))```