1. 程式人生 > >LEETCODE 9 Palindrome Number (JAVA題解)

LEETCODE 9 Palindrome Number (JAVA題解)

https://leetcode.com/problems/palindrome-number/

原題如上。

題意解析:

判斷一個整數是否是迴文整數。像123321,,121,這樣的,就是迴文整數,負數都不是迴文整數。

關鍵點在於,常數空間,即,不能用陣列。

解題思路:

先求得整數最高位的數量級,例如123454321最高位的數量級是1000000000,用整數除以這個數量級,然後對10求餘,即可得到該位數字。

點到即止

public boolean isPalindrome(int x) {
        
        //防止溢位情況,先用long型變數儲存
        long y=(long)x;
        
        //消去符號
        if(y<0) return false;
        
        //先確定輸入數字的數量級
        int left=1,right=1;
        while(y/left>=10){
            left*=10;
        }
        
        //迴文判斷邏輯
        while(left>right){
            if(y/left%10 != y/right%10){
                return false;
            }
            right*=10;
            left/=10;
        }
        return true;
    }