美文网首页
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进

作者: 七月流火andy | 来源:发表于2019-03-09 14:45 被阅读0次

    题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    e.g:

    1. 输入: 123 输出: 321
    2. 输入: -123 输出: -321

    思路:

    余10,result * 10 加上余10后的结果,需要验证结果是否可能溢出

    java代码

     /**
         * 题目5:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
         * e.g: 1. 输入: 123  输出: 321
         * 2. 输入: -123 输出: -321
         * 思路: 余10,result * 10 加上余10后的结果
         * 需要验证结果是否又可能移除,可以在加操作前,用最大值减去余10后的结果与result * 10比较
         *
         * @param x
         * @return
         */
        private static int solution06(int x) {
            int input = x;
            if (input < 0) {
                input = -input;
            }
            int result = 0;
            int temp = 0;
            while (input > 0) {
                temp = input % 10;
                // 溢出,可能存在的问题:负数和正数不一样
                // 乘可能造成的溢出
                if (Integer.MAX_VALUE / 10 < result) {
                    result = 0;
                    break;
                }
                // 加可能造成的溢出
                if (Integer.MAX_VALUE - result * 10 < temp) {
                    result = 0;
                    break;
                }
                result = result * 10 + temp;
                input = input / 10;
            }
            if (x < 0) {
                return -result;
            }
            return result;
        }
    

    已经看到这里了,帮忙点个喜欢❤️呗,谢谢啦!!

    相关文章

      网友评论

          本文标题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进

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