leetcode-7&9

来源:互联网 发布:长沙学历网络教育报名 编辑:程序博客网 时间:2024/05/29 19:48

7.Reverse Integer

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

方法1:使用long long回避溢出,最后判断。

class Solution {public:    int reverse(int x) {        long long res = 0;        while(x){            res = 10 * res + x % 10;            x /= 10;        }        return (res < INT_MIN || res > INT_MAX) ? 0 : res;    }};
方法2:对溢出的巧妙判断。

class Solution {public:    int reverse(int x) {        int res = 0;        while(x){            int tmp = 10 * res + x % 10;            if(tmp / 10 != res) //overflow!                return 0;            res = tmp;            x /= 10;        }        return res;    }};


9.Palindrome Number

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

方法和上面一题类似,但是只要算一半即可,比较前一半和后一半是否相等。

class Solution {public:    bool isPalindrome(int x) {        if(x<0|| (x!=0 &&x%10==0)) return false;        int sum=0;        while(x>sum)        {            sum *= 10;            sum += x % 10;            x /= 10;        }        return (x==sum)||(x==sum/10);    }};