美文网首页
实现整数的数字翻转

实现整数的数字翻转

作者: 段段小胖砸 | 来源:发表于2021-06-22 17:12 被阅读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;
            }
    

    相关文章

      网友评论

          本文标题:实现整数的数字翻转

          本文链接:https://www.haomeiwen.com/subject/uzrmyltx.html