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

实现整数的数字翻转

作者: 段段小胖砸 | 来源:发表于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;
        }

相关文章

  • 实现整数的数字翻转

    题目:(力扣第7题) 思路,整数转换为字符串再转化为char数组方案一:逆序输出(暴力破解)数据结构:字符数组算法...

  • java实现整数翻转

    给定一个 32 位有符号整数,将整数中的数字进行反转 示例: 输入:123 输出:321 注意: 假设我们的环境只...

  • 翻转整数(2)

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

  • leetcode算法-7-整数翻转

    leetcode算法-7-整数翻转 问题描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反...

  • 整数翻转

    代码如下:

  • 用栈翻转

    用栈翻转 「栈翻转」是一个非常重要的性质, 有 字符串的翻转 整数的翻转 把栈转换成队列 0X00 栈翻转 整数的...

  • LeetCode题解之 6 和 9 组成的最大数字

    6 和 9 组成的最大数字 题目描述 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字...

  • LeetCode:整数翻转

    About 挑战LeetCode第4天,今天的难度都算不上挑战了,一道非常easy的题,本来,这种简单的题目我们应...

  • 07整数翻转

    2019年04月16日 Day02 级别:简单 LeetCode 07 题目: 整数反转 给出一个 32 位...

  • [Leetcode][7][reverse integer][e

    题目描述: 对于输入的一个整数,对它进行翻转操作。但是反转后的数字不能超过32-bit signed intege...

网友评论

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

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