zoukankan      html  css  js  c++  java
  • [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;
        }
     
  • 相关阅读:
    scrapy练习1
    sys.path.append()加入当前目录为环境变量
    同济:003.映射与函数3
    1-4 无监督学习(Unsupervised Learning)
    1-3.监督学习(supervised learning)
    同济:002.映射与函数2
    github访问过慢解决
    LeetCode OJ:Contains Duplicate(是否包含重复)
    LeetCode OJ:Maximum Product Subarray(子数组最大乘积)
    LeetCode OJ:Valid Anagram(有效字谜问题)
  • 原文地址:https://www.cnblogs.com/lingtingvfengsheng/p/4319392.html
Copyright © 2011-2022 走看看