Leetcode 9

来源:互联网 发布:领淘宝优惠券的软件 编辑:程序博客网 时间:2024/05/21 07:08

题意

判断一个数是否是回文数,要求O(1)空间。

思路

如果O(1)空间的话,那么可以考虑逆转这个数字,但是会导致溢出。

比如要判断123494321是否是回文串,我们只需要比较前一半和后一半,即1234和4321,所以只需要逆转数字的后一半即可。

代码

class Solution {public:    bool isPalindrome(int x) {        if (x < 0) return false;        int l = 0, t = x;        while (t) {            t /= 10;            l++;        }        int halfL = l / 2;        int backHalf = 0;        for (int i = 0; i < halfL; i++) {            int tx = x % 10;            x /= 10;            backHalf *= 10;            backHalf += tx;        }        if (l & 1) x /= 10;        return x == backHalf;    }};
0 0