LeetCode(7)Reverse Integer
2015-04-27 15:36
363 查看
题目:
Reverse digits of an integer.Example1: x = 123, return 321
Example2: x = -123, return -321
分析:
乍看,好似是一个很简单的题目,只需要将整数从最低位起到最高位依次处理即可,但是,此题的关键在于如何处理溢出数据。我们知道,Integer类型数据的范围是:#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX 2147483647 /* maximum (signed) int value */
而且,此处的溢出判断必须同时包括原始数据x 以及反转结果,均不越界。
溢出判断:
(1)2147483647 为十位数,首先,当x为9位数及以下时,原始数据与反转数据均不会越界;(2)对反转做特殊判断,参考博客:http://blog.csdn.net/stephen_wong/article/details/28779481
溢出判断代码:
bool overflow(int x) { if (x / 1000000000 == 0) // x的绝对值小于1000000000, 不越界 { return false; } else if (x == INT_MIN) // INT_MIN反转后越界,也没法按下述方法取绝对值(需要特判),直接返回true { return true; } x = abs(x); // x = d463847412 -> 2147483647. (参数x,本身没有越界,所以d肯定是1或2) // or -d463847412 -> -2147483648. for (int cmp = 463847412; cmp != 0; cmp/=10, x/=10) { if ( x%10 > cmp%10 ) { return true; } else if (x%10 < cmp%10) { return false; } } return false; }
AC代码:
class Solution
{
public:
int reverse(int x)
{
if( overflow(x) == true)
{
return 0;
}
int result = 0;
while (x!=0)
{
result = 10*result + x%10;
x /= 10;
}
return result;
}
private:
bool overflow(int x) { if (x / 1000000000 == 0) // x的绝对值小于1000000000, 不越界 { return false; } else if (x == INT_MIN) // INT_MIN反转后越界,也没法按下述方法取绝对值(需要特判),直接返回true { return true; } x = abs(x); // x = d463847412 -> 2147483647. (参数x,本身没有越界,所以d肯定是1或2) // or -d463847412 -> -2147483648. for (int cmp = 463847412; cmp != 0; cmp/=10, x/=10) { if ( x%10 > cmp%10 ) { return true; } else if (x%10 < cmp%10) { return false; } } return false; }
};
LeetCode07 AC代码下载
相关文章推荐
- LeetCode Reverse Integer
- LeetCode——Reverse Integer
- LeetCode : Reverse Integer [java]
- [LeetCode] Reverse Integer、Palindrome Number
- leetcode(7)Reverse Integer
- LeetCode 第 7 题(Reverse Integer)
- leetcode Reverse digits of an integer(经测试绝对正确)
- [Week 1]【Leetcode】Reverse Integer(逆序问题)
- 【LeetCode】- Reverse Integer(将一个整数反转)
- [Leetcode] reverse integer 反转整数
- leetcode-007-Reverse Integer
- leetcode Reverse integer
- LeetCode: Reverse Integer,Palindrome Number
- LeetCode (7)Reverse Integer
- LeetCode_reverse integer_007
- leetcode上reverse integer的C语言代码
- Reverse Integer -leetcode
- Reverse Integer--LeetCode(Java)
- Reverse Integer Leetcode Python Java
- leetcode-07-reverse integer-python