第1关:双端队列抽象数据类型及其实现

# -*- coding: utf-8 -*-
'''请在Begin-End之间补充代码, 完成 Deque 类'''
class Deque():
#初始化列表
def __init__(self):
self.items = []
# 判断队列是否为空
def is_empty(self):
return self.items == []
# 在队头添加元素
def add_front(self, item):
# ********** Begin ********** #
# ********** End ********** #
#队尾添加元素
def add_rear(self, item):
# ********** Begin ********** #
# ********** End ********** #
# 从队头弹出元素
def remove_front(self):
# ********** Begin ********** #
# ********** End ********** #
# 从队尾弹出元素
def remove_rear(self):
# ********** Begin ********** #
# ********** End ********** #
# 返回队列尺寸
def size(self):
return len(self.items)
if __name__ == "__main__":
deque = Deque()
nums1 = input().split()
# 将nums1中的元素依次从队尾送入队列
for num in nums1:
deque.add_rear(num)
nums2 = input().split()
# 将nums2中的元素依次从队头送入队列
for num in nums2:
deque.add_front(num)
# 将队列中的元素按照先头后尾的次序交替弹出
while not deque.is_empty():
print(deque.remove_front(), end = ' ') # 先从队头弹出元素
if not deque.is_empty():
print(deque.remove_rear(), end = ' ') # 再从队尾弹出元素
第2关:双端队列应用之回文词判定

# -*- coding: utf-8 -*-
class Deque():
#初始化列表
def __init__(self):
self.items = []
# 判断队列是否为空
def is_empty(self):
return self.items == []
# 在队头添加元素
def add_front(self, item):
self.items.insert(0,item)
#队尾添加元素
def add_rear(self, item):
self.items.append(item)
# 从队头弹出元素
def remove_front(self):
if self.is_empty():
return
else:
return self.items.pop(0)
# 从队尾弹出元素
def remove_rear(self):
if self.is_empty():
return
else:
return self.items.pop()
# 返回队列大小
def size(self):
return len(self.items)
'''请在Begin-End之间补充完成代码, 完成 palChecker 函数, 完成回文词判定'''
def palChecker(String):
deque = Deque()
# ********** Begin ********** #
def palChecker(String):
deque = Deque()
for char in String:
deque.add_rear(char)
while deque.size() > 1:
front = deque.remove_front()
rear = deque.remove_rear()
if front != rear:
return False
return True
# ********** End ********** #
if __name__ == "__main__":
String = input()
print(palChecker(String))