LeetCode 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.

解析:
给定一个int数值,将其翻转返回。
数值翻转采用模10取余取得最低位,主要注意两个问题:1,符号问题;2,越界问题。
针对符号问题,可以先求绝对值,然后最终判断处理。
针对越界问题 ,可以使用long类型来存储,并与int最大值最比较。
具体代码如下:
[cc lang=”C++”]
class Solution {
public:
int reverse(int x) {
long result = 0;
int temp = abs(x);
while(temp >0)
{
int last_dig = temp %10;
result = result * 10 + last_dig;
if(result > INT_MAX)
return 0;
temp = temp /10;
}
return (int)x>0?result:-result;
}
};
[/cc]

方法2:
根据官方给出的方法,没有针对符号进行特殊处理,并且数据类型也没有专门使用long类型。这样代码更舒适。
[cc lang=”C++”]
class Solution {
public:
int reverse(int x) {
int res = 0;
while (x != 0) {
if (abs(res) > INT_MAX / 10) return 0;
res = res * 10 + x % 10;
x /= 10;
}
return res;
}
};
[/cc]

解法3:
[cc lang=”C++”]
class Solution {
public:
int reverse(int x) {
long long result = 0;
while(x)
{
result = result*10 + x %10;
if(result > INT_MAX || result

Add a Comment

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据