实现整数的数字翻转

2021-06-22  本文已影响0人  段段小胖砸

题目:(力扣第7题)


image.png

思路,整数转换为字符串再转化为char数组
方案一:逆序输出(暴力破解)
数据结构:字符数组
算法思维:遍历

public int reverse(int x) {
            if (x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) {
                return 0;
            }
            int sign = x > 0 ? 1 : -1;
            x = x < 0 ? -x : x;

            //整数转字符串, 再转字符数组
            String s = String.valueOf(x);
            char[] chars = s.toCharArray();
            //反向遍历字符数组,并将元素存储到新数组中
            int len = chars.length;
            char[] array = new char[len];
            for (int i = len - 1; i >= 0;  i--) {
                array[len - 1 - i] = chars[i];
            }

            //将新数组转成字符串,再转成整数输出
            long value = Long.valueOf(String.valueOf(array));
            boolean b = value > Integer.MAX_VALUE || value < Integer.MIN_VALUE;
            int result = b ? 0 : (int) value;
            return result*sign;
        }

方案二:首尾交换
数据结构:字符数组
算法思维:遍历

public int reverse(int x) {
            //整数类型的最小值绝对值比最大值的绝对值大1
            if (x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) {
                return 0;
            }
            int sign = x > 0 ? 1 : -1;
            x = x < 0 ? -x : x;

            //整数转字符串, 再转字符数组
            String s = String.valueOf(x);
            char[] chars = s.toCharArray();

            //交换首位和末位数字
            //循环操作,交换首位++和末位--(循环结束start>end,奇数个;start=end,偶数)
            int start = 0;
            int end = chars.length - 1;
            while (start < end) {
                char temp = chars[start];
                chars[start] = chars[end];
                chars[end] = temp;
                start++;
                end--;
            }

            //将新数组转成字符串,再转成整数输出
            long value = Long.valueOf(String.valueOf(chars));
            boolean b = value > Integer.MAX_VALUE || value < Integer.MIN_VALUE;
            int result = b ? 0 : (int) value;
            return result * sign;
        }
上一篇下一篇

猜你喜欢

热点阅读