[LeetCode]9 迴文數
阿新 • • 發佈:2018-11-11
題目描述
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。 示例 3: 輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
思路:
一種是利用StringBuffer的反轉函式來處理,有點慢
二種是將直接算出他的迴文數
第一種程式碼:
class Solution { public boolean isPalindrome(int x) { StringBuffer s = new StringBuffer(); s.append(x); //System.out.println(s.reverse()+"--"+String.valueOf(x)); try { if(s.reverse().toString().equals(String.valueOf(x))){ return true; } }catch (Exception e){ //e.printStackTrace(); return false; } return false; } }
速度:花了230ms
第二種程式碼:
class Solution { public boolean isPalindrome(int x) { if(x<0) return false; else if(x==0){ return true; }else { if(getPalindrome(x)==x){ return true; } } return false; } public int getPalindrome(int x){ int length = String.valueOf(x).length(); int sum = 0; for(int i = length-1;i>=0;i--){ int extra = x%10; x = x/10; sum = sum + extra*(int)(Math.pow(10.0,(double) i)); //System.out.println("sum"+sum); } return sum; } }
速度:143ms
比上次慢 但覺得還能有提升,再議