1. 程式人生 > >[LeetCode]9 迴文數

[LeetCode]9 迴文數

 題目描述

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 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

比上次慢 但覺得還能有提升,再議