python实现双端队列并解决判断回文字符串的问题
python实现双端队列并解决判断回文字符串的问题
文章目录双端队列示意图
双端队列的基本操作
双端队列的应用:判断回文字符串
双端队列示意图
双端队列的基本操作
右边的元素是队头
class Deque:
def __init__(self):
self.items = []
def isEmpty(self):
# 判断是否为空
return 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 size(self):
# 双端队列的大小
return len(self.items)
双端队列的应用:判断回文字符串
回文字符串,是从左往后读和从右往左读,都i是一样的字符串,如radar
思路:首先将整个字符串从队尾输入到双端队列中,然后分别从两端取出元素进行比较,如果始终一致,说明是一个回文字符串。
# 判断回文
def palchecker(aString):
chardeque = Deque()
for ch in aString:
chardeque.addRear(ch)
'''
这里写为 chardeque.addFront(ch) 应该也可以
'''
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"))
参考:
https://runestone.academy/runestone/static/pythonds/BasicDS/PalindromeChecker.html
python实现双端队列并解决判断回文字符串的问题相关教程