Python編程算法【二十一】 回文數(shù)
【案例內(nèi)容】
打印所有不超過256的平方數(shù),且該平方數(shù)是個具有對稱性質(zhì)的數(shù)(回文數(shù))
【解題思路】
由于具有對稱性質(zhì)的數(shù)才是回文數(shù),那么至少應(yīng)該是2位數(shù),而在所有2位數(shù)的回文數(shù)(11、22、33...99)都不是某個數(shù)的平方,因此只能從3位數(shù)開始找起,即10的平方開始,一直到256的平方,找出其中的回文數(shù)。
本題按常規(guī)做法,就是把某個數(shù)字平方后,如果是3位數(shù),就判斷其百位和個位是否相等;如果是4位數(shù)或5位數(shù),則判斷其千位和百位是否與其個位和十位相等(4位數(shù)),或其萬位和千位是否與其個位和百位相等(5位數(shù))。在此之前得先通過取?;蛘玫较鄳?yīng)的位數(shù),然后才能進行判斷。
本題另一種突破常規(guī)的做法是,把平方后的數(shù)轉(zhuǎn)換成字符型(str),求出字符串的長度,如果長度是3,就判斷索引為0及-1的值是否相等即可;如果字符串長度是4或5,則判斷索引為0和1的值是否與索引為-1和-2的值相等即可。因為不管是4位數(shù)還是5位數(shù),都是判斷前兩個數(shù)是否和后兩個數(shù)相等。如此一來就能化繁為簡,把看似復雜的問題輕巧的解決了。
【Python代碼】

用常規(guī)方法求解,雖然也能得出最終的結(jié)果,但比較麻煩和復雜。此時我們?nèi)绻軌蛄肀脔鑿?,可能會找到“捷徑”,輕而易舉的解決問題。因此在看待問題時,要多方思考,發(fā)散思維,也許就能巧解難題。
標簽: