整数反转:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

public class IntReverse {
/**
* 借助字符串反转
* @param x
* @return
*/
public int reverse(int x) {
String xStr = String.valueOf(x);
char[] chars =xStr.toCharArray();
StringBuffer tmp = new StringBuffer();
int range =0;
if(x<0) {
tmp.append("-");
range++;
}
for(int i=chars.length-1;i>=range;i--){
tmp.append(chars[i]);
}
return Integer.valueOf(tmp.toString());
}

/**
 * 数学算法
 * @param args
 */
public int reverse1(int x) {
    int result=0;
    while(x!=0){
        int pop = x%10;//取最低位的值,负数取余数,余数也为负数
        x = x/10;//负数取商,商也为负数
        if(result>Integer.MAX_VALUE/10||(result==Integer.MAX_VALUE/10&&pop>Integer.MAX_VALUE%10)){
            result=0;
            break;
        }
        if(result<Integer.MIN_VALUE/10||(result==Integer.MIN_VALUE/10&&pop<Integer.MIN_VALUE%10)){
            result=0;
            break;
        }
        result = result*10+pop;
    }
    return result;
}
public static void main(String[] args){
    IntReverse intReverse = new IntReverse();
    int x = -1463847412;
    System.out.println(intReverse.reverse1(x));
}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容