您的位置:首页 > 其它

LeetCode #7 Reverse Integer 翻转整数 解题小节

2016-03-10 23:51 218 查看

1 原题

Reverse Integer 翻转

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321

2 解析

大水题啊,就是给定一个数,让你翻转。。。就是小心溢出就好。。

防止溢出方式很多:

1、比如转变成Long,再加判断就不会溢出了。。

2、或者找到比最大最小值小10被的,提前预防

至于到转么,不就是一个/ 一个% 的配合么,不多说了

3 AC Java解

public class Solution {
/**
* 最简单的方式,采用long拓展,并且提前判断是否超出了Integer范围,flag是符号
* **/
public int reverse2(int x) {
if(x==0) return x;
long tmp=Math.abs(x);
long flag=tmp/x;
long result=0;
while (tmp>0){
if(result*10>Integer.MAX_VALUE || result*10<Integer.MIN_VALUE)
return 0;
result=result*10+tmp%10;
tmp=tmp/10;
}
return (int)(flag*result);
}

/**
* 不用也可以嗒,提前算好就好
* */

public int reverse(int x) {
if(x==0) return x;
int tmp=Math.abs(x);
int flag=tmp/x;
int result=0;
int maxs=Integer.MAX_VALUE/10;
int mins=Integer.MIN_VALUE/10;
while (tmp>0){
if(result > maxs|| result < mins)
return 0;
result=result*10+tmp%10;
tmp=tmp/10;
}
return (flag*result);

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