“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
根据之前所提到的双端队列的特性,我们可以很方便对所输入的数字或者字符串进行检测。只需将放入队列中的字符串从两端同时取出进行比较即可,若相同则继续,反之输出退出。当然,得注意一下字符串位数(或数字位数)的奇偶。
代码如下:
from pythonds.basic import Deque
def palindrome(char):
checker = Deque()
for ch in char:
checker.addRear(ch)
count = True
while checker.size() > 1 and count:
if checker.removeRear() != checker.removeFront():
count = False
return count
a = input()
print(palchecker(a))
运用好双端队列,我们也可以用来解决之前PTA里做到过的回文数判断练习:
编写函数返回形式参数(一个正整数)是否为回文数(正反序相同的数,例如1,12321,101等)。主函数功能为:输入两个整数a,b,输出[a,b]之间的回文数。
样例">输入样例:
10 50
输出样例:
11,22,33,44
输入样例:
100 200
输出样例:
101,111,121,131,141,151,161,171,181,191
代码如下:
from pythonds.basic import Deque
def palindrome(char):
checker = Deque()
for ch in char:
checker.addRear(ch)
count = True
while checker.size() > 1 and count:
if checker.removeRear() != checker.removeFront():
count = False
return count
n, m = map(eval, input().split())
count = 0
for i in range(n, m + 1):
if palchecker(str(i)):
count += 1
if count == 1:
print(i, end='')
else:
print(f",{i}", end='')