ACM之判斷迴文數
題目如下
這道題比較簡單,先上Python程式碼感受一下,就一行搞定:
#判斷迴文數def isPalindrom(x): return str(x) == str(x)[::-1]
這種方法雖然簡單,但是耗時比較長。再用Java解決一下看看
方法一
顯然負數不可能是迴文數,區間[0,9]的整數肯定是迴文數,所以把這些確定的條件先進行判斷
將整數的每一位放在連結串列中,然後將連結串列逆序,比較逆序連結串列與順序連結串列元素是否一樣,一樣則是迴文數,否則不是
程式碼如下:
public class PalindromNumber { public boolean isPalindrom(int x){ if(x < 0) return false; List<Integer> num = new ArrayList(); while(x != 0){ num.add(x % 10); x = x / 10; } int len = num.size(); List<Integer> numRev = new ArrayList(); for(int i = len-1;i >= 0;i--){ numRev.add(num.get(i)); } for(int i = 0;i < len ;i++) { if(num.get(i) != numRev.get(i)){ return false; } } return true; }
方法二
將上述程式碼最佳化,發現其實我們只需要比較一般就行了,也就是將數從左往右讀的前一半與從右往左讀的後一半比較就ok,比如一個數12133121,前一半為1213,後一半是1213,顯然數迴文數。當一個數不能平均分為兩半時,將較大的數(即前一半)整除10得到的數再與小數比較就行,因為前一半各位的數字也可以作為後一半的最高位,是公用的,去掉不會有影響。如121343121,前一半為121234,後一半為1213,12134/10=1213與後一半相同,故判斷為迴文數
程式碼:
public class PalindromNumberBter { public boolean isPalindrom(int x){ if(x < 0 || (x > 0 && x % 10 == 0)) return false; int half = 0; while(x > half) { half = half*10 + x%10; x = x/10; } return (x == half || x == half/10); }
可以直觀的對比他們所需的時間,用時最少的是方法二
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3407/viewspace-2815711/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java判斷迴文數Java
- 判斷迴文串 字串/數字相互轉換字串
- python如何判斷迴文Python
- Python:判斷一個正整數是否為迴文數Python
- 33判斷字串是否為迴文字串
- python 學習--使用filter來實現判斷迴文數PythonFilter
- YTUOJ-判斷字串是否為迴文字串
- Python之判斷迴圈語句Python
- JS的判斷語句:判斷、迴圈JS
- C語言:判斷一個字串是否為迴文C語言字串
- 判斷一個字串/整數是不是迴文 2020-11-10字串
- js之普通/高效判斷質數JS
- Swift,迴圈及判斷Swift
- Python花式程式設計案例集錦(7):判斷迴文Python程式設計
- 判斷是否為迴文字元字元
- 5.判斷和迴圈
- 02 . Shell變數和邏輯判斷及迴圈使用變數
- 藍橋杯之特殊迴文數JAVAJava
- 素數迴文——輸出兩整數之間所有既是迴文數又是素數的數 C++實現C++
- 利用棧和隊來判斷輸入的一個字串是否為迴文字串
- 利用正規表示式判斷一個給定的字元是否是迴文字元
- python條件判斷與迴圈Python
- 【質數判斷】給定兩個數,判斷這兩個數是否互質?
- 變數,運算子,if判斷變數
- JQuery 判斷 正整數jQuery
- JavaScript判斷整數或者小數JavaScript
- JavaScript判斷數字正負數JavaScript
- C語言判斷素數,判斷質素演算法C語言演算法
- nginx判斷路徑是否含有某個引數做判斷Nginx
- Python基礎:條件判斷 & 迴圈Python
- python迴圈語句判斷的使用Python
- 豬行天下之Python基礎——4.1 條件判斷與迴圈Python
- PbootCMS判斷第一個迴圈項,並新增 class條件判斷和標籤boot
- 如何判斷變數型別變數型別
- JavaScript判斷數字是否是質數JavaScript
- python之判斷語句Python
- 每日codewars題之判斷一個數是否是水仙花數
- 3. Python中的分支判斷、迴圈Python