1. 程式人生 > >[Leetcode]-Palindrome Number

[Leetcode]-Palindrome Number

javascrip hid exp 回文 十進制 urn xtra != post

Determine whether an integer is a palindrome. Do this without extra space.
題目:推斷int數據是否為回文數
註意:負數不是回文數,0是最小的回文數
思路:此題和前面一道 求int數的反序差點兒相同http://blog.csdn.net/xiabodan/article/details/46674133
1、第一種解法不須要邊界推斷,暴力求解。依次比較最後一位與第一位、倒數第二位與第二位……….一直比較N/2次,N為數據x的十進制位數
2、另外一種解法因為須要對數據x取反系,所以要邊界檢查。當然也能夠採用一個long long的數據去存反序數據r

bool isPalindrome(int x) {

    //解法1
 /*
    int n = 0;
    int tem = x;
    int i = 0;
    if(x < 0) return false;
    while(tem)
    {
        n++;
        tem = tem / 10;
    }
    int m = n;
    for(i=0;i<n/2;i++)
    {
        if(((x/(int)pow(10,i))%10) != (x/(int)pow(10,m-1))%10)
            return false;
        m
--; } return true; */ //解法2 int INT_MAX_DIV10 = INT_MAX / 10; int r = 0; if(x<0) return false; if(x<10) return true; int t = x; int tem = 0;//邊界緩存 while(x) { if(r > INT_MAX_DIV10) return 0; r = r * 10 ; tem = x % 10 ; if
(INT_MAX - tem < r) return 0; r = r + tem; x = x/10; } return (r == t); }

[Leetcode]-Palindrome Number