Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123 Output: 321Example 2:
Input: -123 Output: -321Example 3:
Input: 120 Output: 21Note: 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 */