您的位置:首页 > 编程语言 > Java开发

Reverse Integer leetcode java

2015-12-16 16:23 295 查看
问题描述:

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

分析:将一个整数逆序输出,需要判断是否越界。Integer.MAX_VALUE,Integer.MIN_VALUE,由于要进行正、负越界判断,因此,若是负数,则要转换为整数。

代码

public int reverse(int x) {

int ret = 0;
int digit = 0;
boolean neg_flag = false;

if (x < 0) {
neg_flag = true;
x = -1 * x;  //covert to abs(x), and record the symbol of negative or positive.
}

while (x != 0) {
digit = x % 10; //get the last digit of x,获得x的最末尾数字

//if ret overflows?
if (ret != 0) {  //must follow this pattern to check
if ((Integer.MAX_VALUE - digit) / ret < 10 )
return 0;

if (neg_flag == true) {
if (-10 < (Integer.MIN_VALUE + digit) / ret)
// - (ret * 10 + digit) < Integer.MIN_VALUE
//if we convert the number to abs, we need to compare it in negative form with Integer.MIN_VALUE
return 0;
}
}

ret = ret * 10 + digit;
x = x / 10; //chop off the last digit of x,斩断x的最末尾数字
}

if (neg_flag == true)
ret = -1 * ret;

return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: