Wednesday, February 3, 2016

[LintCode] 491 Palindrome Number

Description
Check a positive number is a palindrome or not.
A palindrome number is that if you reverse the whole number you will get exactly the same number.


Notice
It's guaranteed the input number is a 32-bit integer, but after reversion, the number may exceed the 32-bit integer


Example
11, 121, 1, 12321 are palindrome numbers.
23, 32, 1232 are not palindrome numbers.


思路
可以用两个指针一个头一个尾。分别向中间走。
另一个巧妙的办法是:如果这个数是palindrome,那么把它从当中切开,前一半和后一半正好相反。
那么我们其实只要看一半就可以。


Code
public class Solution {
    /**
     * @param num a positive number
     * @return true if it's a palindrome or false
     */
    public boolean palindromeNumber(int num) {
        // Write your code here
        if (num < 0 || (num >= 10 && num % 10 == 0)) {
            return false;
        }
        int sum = 0;
        while (num > sum) {
            sum = sum * 10 + num % 10;
            num = num / 10;
        }
        return sum / 10 == num || sum == num;
    }
}