leetcode原题:Reverse Integer
Description:
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.
这道题的主要内容就是写一个使整型数逆序输出的函数,如果逆序后得到的数字超过32位整型数范围即-2^31-2^31-1,输出为0;
解题思想就是通过%10和/10来得到给定整型数的每个位,然后边得到每个位的数值边计算出逆序后得到的数值,关键点就是判断溢出——即在得到逆序倒数第二位的时候进行判断溢出,例如给定数1534236469,在逆序计算数值到964632435时结合倒数第一位的数值进行溢出判断。
函数代码:
int reverse(int x) {
if (x > 2147483647 || x < -2147483648) return 0;
int temp = 0;
while(x > 9 || x < -9)
{
temp = temp * 10 + x % 10;
x = x / 10;
}
int temp1 = 0;
temp1 = x / 10;
if ((temp > 214748364 || (temp == 214748364 && temp1 > 7)) || (temp < -214748364 || (temp == -214748364 && temp1 > 8))) return 0;
else return temp * 10 + x % 10;
}