puzzle 第一题

Published in categories blog  Technology  tagged with #algorithm 

回文数


for i in range(10,1000):
#	if str(i)==str(i)[::-1]
#		print(i)
	a = bin(i).replace('0b','')
#	print(a)
	b = oct(i)[1:]
	c = str(i)
	
	if a==a[::-1] and b==b[::-1] and c==c[::-1]:
		print(c)
		print(a)
		print(b)
		break

其中用到了range(),

bin(),oct(),hex() 分别可以得到二进制,八进制,十六进制的字符,其中字符前几位会有标识,所以需要切片

切片方法 str[1:],

python的 reverse 方法 str[::-1]

优化:

  1. 用while 代替 range,就不用判断最大值是多少
  2. 二进制末位一定是1,所以数字一定是奇数
comments powered by Disqus