LeetCode------------Java-------------反转整数

版权声明:转载请注明出处@Author anlijie https://blog.csdn.net/m0_38101105/article/details/82291410

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
这里写图片描述

 int ret = 0;
        for (; x != 0; x /= 10) {
            if (ret != 0 && Integer.MAX_VALUE / ret < 10 && Integer.MAX_VALUE / ret > -10) {
                return 0;
            }
            ret = ret * 10 + x % 10;
        }
        return ret;

这个是我抄的答案,这个算法我是想不到,我的两个版本的答案全死在大数上
为了纪念我的代码我把它们贴出来共勉

if (x == 0) {
            return 0;
        }
        String stringX = String.valueOf(x);
        String stringBuilder = "";
        int size = stringX.length();
        int sign = -1;
        if (stringX.charAt(0) == '-') {
            size -= 1;
            stringBuilder += "-";
            sign = 0;
        }
        boolean bool = false;
        int signAnother = 0;
        for (int i = stringX.length()-1; i > sign; i--) {
            bool = (stringX.charAt(i)-'0') != 0;
            if (bool || signAnother == 1) {
                signAnother = 1;
                stringBuilder += stringX.charAt(i);
            }
        }
        BigInteger maxInt = new BigInteger(stringBuilder);
        Integer integer = maxInt.intValue();
        return integer;
String str = String.valueOf(x);
        Stack<Object> s1 = new Stack<>();
        for (int i = 0; i <str.length() ; i++) {
            s1.push(Integer.valueOf(str.charAt(i) - '0'));
        }
        for (int i = 1; i <str.length() ; i++) {
            if (s1.search(0) == 1) {
                s1.pop();
            }else {
                break;
            }
        }
        boolean a = false;
        if (str.charAt(0) == '-') {
            a = true;
        }
        Stack<Object> stack = new Stack<>();
        if (a) {
            stack.push("-");
            for (int i = s1.size()-1; i >-1 ; i--) {
                stack.push(s1.get(i));
            }
            stack.pop();
        }
        System.out.println(stack);
        String s = "";
        for (int i = 0; i <stack.size() ; i++) {
            s += String.valueOf(stack.get(i));
        }
        System.out.println(s);
        int b = Integer.valueOf(s);
        return b;

猜你喜欢

转载自blog.csdn.net/m0_38101105/article/details/82291410