• [leetcode 7]Reverse Integer


    1 题目

    Reverse digits of an integer.

    Example1: x = 123, return 321
    Example2: x = -123, return -321

    click to show spoilers.

    Have you thought about this?

    Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!

    If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.

    Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?

    For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

    2 思路
    题目提醒了要考虑1 10,100变成1的情况,2 翻转后的数字溢出两种特殊情况。
    我想到的是转换为字符串后,反转,然后再变为数字。考虑两种特殊情况,一是负号,二是溢出,溢出可以用try,catch捕捉。
     
    网上的一种代码是利用long多一倍的字节长度来存溢出的数字,采用循环,每次取10的余数,就可以取出最左边一位。效率要高很多。
    3 代码
        public int reverse(int x){    
            String string = Integer.toString(x);
            StringBuffer sb = new StringBuffer(string);
            if (sb.charAt(0) == '-') {
                sb = sb.deleteCharAt(0);
                sb = sb.reverse();
                sb.insert(0, '-');
            }else {
                sb = sb.reverse();
            }
    
            string = sb.toString();
            
            int reverseX = 0;
            try {
                reverseX = Integer.parseInt(string);//溢出
            } catch (Exception e) {
                return 0;
            }
    
            return reverseX;
        }

    网上那种思路的代码

        public int reverse2(int x) {
            long num = 0;
            while(x != 0){
                int temp = x % 10;//取最右边数字
                num += temp;
                x /= 10;
                if(x != 0)
                    num *= 10;
            }
            if(num > Integer.MAX_VALUE || num < -Integer.MIN_VALUE)
                return 0;
            else
                return (int)num;
        }
     
  • 相关阅读:
    443. String Compression
    506. Relative Ranks
    825. Friends Of Appropriate Ages
    447. Number of Boomerangs
    54. Spiral Matrix
    744. Find Smallest Letter Greater Than Target
    HDU-1565 方格取数(1)
    zoj 3672 Gao The Sequence
    ZOJ 3675 Trim the Nails
    poj -2955 Brackets
  • 原文地址:https://www.cnblogs.com/lingtingvfengsheng/p/4319392.html
Copyright © 2020-2023  润新知