LeetCode 7.Reverse Integer(整数反转) -- c语言

    xiaoxiao2022-07-07  205

    7.Reverse Integer

    Given a 32-bit signed integer, reverse digits of an integer.

    Example 1:

    Input: 123 Output: 321

    Example 2:

    Input: -123 Output: -321

    Example 3:

    Input: 120 Output: 21

    Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

    解题思路:

    对整数按位取余,取出每一位数然后相加。期间对结果是否溢出进行判定

    /* 执行用时 : 8 ms, 在Reverse Integer的C提交中击败了96.86% 的用户 内存消耗 : 6.8 MB, 在Reverse Integer的C提交中击败了76.77% 的用户 */ int reverse(int x) { //记录余数 int p; //记录反转后的整数,用long int 类型定义 long int rever = 0; while(x) { p = x;//取余 rever = rever*10 + p;//进行反转 //printf("p = %d,rever = %d ",p,rever); //如果溢出,则返回0 if(rever < -2147483648 || rever > 2147483647 ) { return 0; } x = x/10;//取下一位 } return rever; } /* 输入: -123 stdout: p = -3,rever = -3 p = -2,rever = -32 p = -1,rever = -321 输出: -321 预期结果: -321 */

    后记:

    由上面的测试用例可知,无需对负数符号进行特别处理。反转后整数用long int 类型定义,可以确保安全-2147483648 可用INT_MIN; 2147483647可用INT_MAX-1
    最新回复(0)