回文数的几种解法 您所在的位置:网站首页 python回文数编程不用列表 回文数的几种解法

回文数的几种解法

2024-07-10 22:40| 来源: 网络整理| 查看: 265

回文数指的是一个数字正着读和反着读,数字都是一样的,比如1221 回文数的问题一直在算法题里拥有很高的热度。它可以不断变着花样出题,比如特殊的回文数,回文质数… 给大家带来几种回文数的基本求法以及它们的优劣性,欢迎补充:

方法1 while True: try: n = int(input('输入一个四位数:')) if n%10 == n//1000: if n//10%10 == n//100%10: print('yes') else: print('no') else: print('no') except: break

根据回文数的性质来判断,既然一个数是回文数,那么它的第一位和最后一位,第二位和倒数第二位…肯定是相同的,我们可以根据这样的性质来判断。 优点:没有用到循环语句,所以运行速度是很快,可以判断一些简单的数字 缺点:首先你必须要知道这个数是一个几位数,当不确定或者一直变化的时候,就要用到很多的if语句,代码长度是不可估量的。再者,当数字特别大的时候,往往不好处理,它的代码量和数字是成正比的。

方法2 while True: try: n = int(input('输入一个四位数:')) if n%10*1000+n//10%10*100+n//100%10*10+n//1000 == n: print('yes') else: print('no') except: break

这种方法属于硬方法,完全跟着回文数的思路来,既然要判断回文数,那么倒过来和它相等的数就是回文数。 优点:速度快,可以很快判断一些简单的数。 缺点:和方法一类似,同样需要知道数是几位数。

方法3 while True: try: n = int(input()) j = n sum = 0 while n>0: sum = sum*10+n%10 n = n//10 if sum == j: print('yes') else: print('no') except: break

和方法二的原理相同。 优点:可以判断任意n位数字,方便,灵活 缺点:硬核方法,当一个数字很简单的时候还用这种方法,有点杀鸡用牛刀的感觉。用到了循环,当我们要判断一组数里的回文数,并且这一组数很多很大,运行速度会慢。

方法四 while True: try: n = str(input()) a = b = [] for j in n: a.append(j) b = a[::-1] if a == b: print('yes') else: print('no') except: break

此方法是将一个str型的数字一个一个切片放入列表中,再将列表反转,如果和原列表相等的话,那么就是回文数。这是一个非常巧妙的方法,虽然用到了循环,但是循环量很少,所以速度运行也非常快。

其它方法

根据方法四可以演变为其他方法,比如在列表中判断第一位和最后一位是否相同…其实都用到了切片的方法,代码本质和方法四相同,且受用程度不是很大。 一般处理一组数字,并且数字不确定时,推荐使用方法四。当处理一些简单的方法时,可以使用前三个方法。

欢迎补充,以及提出疑问。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有