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;
        }
     
  • 相关阅读:
    warmup_csaw_2016
    pwn-简单栈溢出
    吃土
    编程中的进制转换
    linux系统安全及应用——账号安全(基本安全措施)
    vmware vSphere虚拟网络之标准交换机(二)
    vmware vSphere虚拟网络(一)
    服务器虚拟化技术概述
    用shell脚本安装apache
    The server of Apache (二)——apache服务客户端验证
  • 原文地址:https://www.cnblogs.com/lingtingvfengsheng/p/4319392.html
Copyright © 2011-2022 走看看