LeetCode Palidrome Number

class Solution {

public:

    bool isPalindrome(int x) {

        if (x < 0) return false;

        int pow = 1;

        int t = x;

        int cnt = 1;

        while(t /= 10) {

            pow *= 10;

            cnt++;

        }

        t = x;

        cnt = cnt / 2;

        while (cnt--) {

            if ((t / pow % 10) != t % 10) return false;

            t = t / 10;

            pow /= 100;

        }

        return true;

    }

};

500ms+,怎么会那么长时间

第二轮:

Determine whether an integer is a palindrome. Do this without extra space.

还是出了点差错,负数不算回文

// 19:50

class Solution {

public:

    bool isPalindrome(int x) {

        if (x < 0) return false;

        int n = x;

        int cnt = 0;

        

        do {

            cnt++;

            x = x/10;

        } while (x);

        

        int tens = 1;

        for (int i=1; i<cnt; i++) {

            tens = tens*10;

        }

        

        for (int i=cnt/2-1; i>=0; i--) {

            int a = n / tens;

            int b = n % 10;

            n = n - a * tens;

            n = n / 10;

            if (a != b) {

                return false;

            }

            tens = tens/100;

        }

        return true;

    }

};

 

你可能感兴趣的:(LeetCode)