欢迎光临散文网 会员登陆 & 注册

Python编程算法【二十一】 回文数

2022-11-01 21:03 作者:SPC编程爱好者  | 我要投稿

【案例内容】

打印所有不超过256的平方数,且该平方数是个具有对称性质的数(回文数)


【解题思路】

由于具有对称性质的数才是回文数,那么至少应该是2位数,而在所有2位数的回文数(11、22、33...99)都不是某个数的平方,因此只能从3位数开始找起,即10的平方开始,一直到256的平方,找出其中的回文数。

本题按常规做法,就是把某个数字平方后,如果是3位数,就判断其百位和个位是否相等;如果是4位数或5位数,则判断其千位和百位是否与其个位和十位相等(4位数),或其万位和千位是否与其个位和百位相等(5位数)。在此之前得先通过取模或整除拿到相应的位数,然后才能进行判断。

本题另一种突破常规的做法是,把平方后的数转换成字符型(str),求出字符串的长度,如果长度是3,就判断索引为0及-1的值是否相等即可;如果字符串长度是4或5,则判断索引为0和1的值是否与索引为-1和-2的值相等即可。因为不管是4位数还是5位数,都是判断前两个数是否和后两个数相等。如此一来就能化繁为简,把看似复杂的问题轻巧的解决了。


【Python代码】

所有256以内的数的平方是回文数

用常规方法求解,虽然也能得出最终的结果,但比较麻烦和复杂。此时我们如果能够另辟蹊径,可能会找到“捷径”,轻而易举的解决问题。因此在看待问题时,要多方思考,发散思维,也许就能巧解难题。


Python编程算法【二十一】 回文数的评论 (共 条)

分享到微博请遵守国家法律