Loading

反转整数

反转整数

https://leetcode-cn.com/problems/reverse-integer/description/

package com.test;

public class Lesson002 {
    public static void main(String[] args) {
        int input = -2147483648;
        System.out.println(getReverse(input));
    }

    private static int getReverse(int x) {
        int signal = 1;
        if (x < 0) {
            signal = -1;
        }
        if (x == 0) {
            return 0;
        }
        int inputAbs = Math.abs(x);
        // 处理-2147483648问题
        if (inputAbs < 0) {
            return 0;
        }
        // 如果大于1亿,就看个位数是否大于2;
        if (inputAbs > 1000000000) {
            int i00 = inputAbs % 10;
            if (i00 > 2) {
                return 0;
            }
        }
        int mod = 10;
        String res = "";
        // 不停的取余
        while (inputAbs >= mod) {
            int i = inputAbs % mod;
            res = res + i;
            // 每次取余都进行取余之后的除10处理
            inputAbs = inputAbs/mod;
        }
        // 最后剩余的数位也要加上
        res = res + inputAbs;
        try {
            return signal*Integer.parseInt(res);
        } catch (NumberFormatException e) {
            return 0;
        }

    }
}

 用stringbuilder可以进行字符串反转

还可以直接把字符串进行替换;

 

如果是数的交换,可以

a = a + b;

b = a - b

a = a - b

容易溢出;

用那个异或竟然可以交换整数;

public class Lesson002 {
    public static void main(String[] args) {
        int i = 2147483647;
        int j = -2147483648;
        i = i^j;
        j = j^i;
        i = i^j;
        System.out.println(i);
        System.out.println(j);
    }
}

 

 

posted @ 2018-08-09 22:11  stono  阅读(206)  评论(0编辑  收藏  举报