• LeetCode-7. Reverse Integer


    1.题目描述

    Reverse digits of an integer.

    Example1: x = 123, return 321

    Example2: x = -123, return -321

    Note:

    The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

    2.我的分析思路

    我之前的想法是将数字首先判断数字是正数还是负数,然后走不同的分支。接着将数字转换为字符串,然后将字符串倒序输出。

    这个想法感觉没啥问题,但是实施起来的时候遇到了一些问题。字符串倒序输出,转换成char数组,然后倒序访问char数组,放到新的数组中。然后再拼接成字符串,然后将字符串转换为数字。

    实现起来比较麻烦,然而并没有想到其他的好的实现方法。

    3.其他的思路

    看大家的讨论内容,发现了一个比较精妙的实现方法,现分享给大家。

    public static int reverse(int x) throws Exception {
    
        if (x > Integer.MAX_VALUE || x < Integer.MIN_VALUE) {
            return 0;
        }
    
        int revNum = 0;
        int digit = 0;
        // 关键也就是这三行的代码
        while (x != 0) {
            digit = x % 10;
            revNum = digit + revNum * 10;
            x /= 10;
        }
        return revNum;
    }
    

    这个算法的精妙之处,可以debug查看。每次获取到数字的个位数,然后接着将这个个位数乘以10之后,加上新的个位数。如此循环,即可得到倒序输出的数字。

    妙哉!妙哉!

  • 相关阅读:
    telnet退出
    Eclipse srever起来时,时间超过45s。
    maven报错 Failure to transfer org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.0 from
    需求讨论
    PyTorch学习笔记之计算图
    PyTorch学习笔记之CBOW模型实践
    PyTorch学习笔记之n-gram模型实现
    PyTorch学习笔记之初识word_embedding
    7月3日-9日_周报
    python学习笔记之heapq内置模块
  • 原文地址:https://www.cnblogs.com/f-zhao/p/6372642.html
Copyright © 2020-2023  润新知