Python编程算法【二十一】 回文数
【案例内容】
打印所有不超过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代码】

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