专栏首页程序猿杂货铺【LeetCode题解---007】 Reverse Integer

【LeetCode题解---007】 Reverse Integer

友情提醒:

大家好,国庆节快乐呀!假期第二天,不管是出门游玩,还是宅在家,都希望你们过得开心。但要想不虚度这美好假期生活,也可以选择看书、学习新技能来提升自己,充实自己。假期是超越对手的好机会,大家可以试试看。

今天的题目很简单,毕竟大过节的,也不能太放肆,不能太为难自己。 另外,手机预览代码格式不佳的用户可以点击文章底部 查看原文

最后愿你们能静心享受生活,学习提升自己,没有辜负大好时光。

1

题目

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123Output: 321

Example 2:

Input: -123Output: -321

Example 3:

Input: 120Output: 21

Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

2

词汇学习

environment 环境 purpose 目的

3

惊人而又蹩脚的中文翻译

数字转置,就是把一个整数顺序颠倒,要注意越界

4

代码实现-Java

01

解法一

转换成字符串,然后进行字符串转置,可以利用字符数组进行,也可利用StringBuffer 的 reverse()方法

这个题主要的考察点在于数值越界的判断上 真正的转置过程其实并不难

public static int reverse(int x) {
        String temp;
        // 是否负数
        boolean isNegativeNumber = false;
        if (x == 0) {
            return x;
        }
        // 数值越界
        if (x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) {
            return 0;
        }
        if (x < 0) {
            // 负数
            isNegativeNumber = true;
            x = -x;
        }
        // 正数
        temp = String.valueOf(x);
        StringBuilder resultStr = new StringBuilder(temp).reverse();
        if (isNegativeNumber) {
            temp = "-" + resultStr.toString();
        } else {
            temp = resultStr.toString();
        }
        Long res = Long.parseLong(temp);
        return (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) ? 0 : Integer.parseInt(res.toString());
    }

02

解法2

使用数学知识来解决,通过不断 /10 和 %10 的方式来解决这个问题

public static int reverse_2(int x) {
        Long result = 0L;
        while (x != 0) {
            // 通过不断取余数的方式得到该值得最后一位数字
            result = result * 10 + x % 10;
            // 不断取整的方式缩小这个目标数字
            x /= 10;
        }
        return (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) ? 0 : Integer.parseInt(result.toString());
    }

5

代码实现-Python

01

解法一

同java版本解法二一样,循环通过对10取模得到尾部数字,一步步乘10构造新的翻转后的整数即可。

但是要注意首先判断数值的正负,最后还要判断结果是否溢出。

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        flag = 1 if x >= 0 else -1
        new_x, x = 0, abs(x)
        while x:
            new_x = 10 * new_x + x % 10
            x /= 10
        new_x = flag * new_x
        return new_x if new_x < 2147483648 and new_x >= -2147483648 else 0

02

解法二

利用Python的字符串反转操作来实现对整数的反转,反转后的字符串要重新转换为整数。同样的道理,要注意正负和溢出情况。

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        x = int(str(x)[::-1]) if x >= 0 else - int(str(-x)[::-1])
        return x if x < 2147483648 and x >= -2147483648 else 0

以上代码会同步更新在本人的Github和CSDN上

Github地址:https://github.com/Bylant/LeetCode

本文分享自微信公众号 - 程序猿杂货铺(zhoudl_l),作者:zhoudl

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从一道面试题探究 Integer 的实现

    当时心里一惊,这是把我当小白了呀!交换两个数的值还不容易么,最简单的直接搞一个中间变量,然后就可以交换了… …

    周三不加班
  • 【数据分析】盘点五一期间最受欢迎的几个景区

    五一假期已经结束,小伙伴是不是都还没有玩过瘾?但是没办法,还有很多bug等着我们去写,同样还有需要money需要我们去赚。为了生活总的拼搏。

    周三不加班
  • 【码出高效】为了避免代码不规范被打死,赶紧来看看吧!

    据外媒报道,来自美国的一名程序员因同事不写注释,不遵循驼峰命名,括号换行,最主要还天天git push -f 等因素枪击了4名同事,导致一人情况危急。

    周三不加班
  • 5 spark入门键值对foldByKey

    可以看到,第一个参数是zeroValue,这个就是用来对原始的V做合并操作的,后面的参数是一个JFunction操作。

    天涯泪小武
  • java计算集合对称差

    两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。 集合A和B的对称差通常表示为AΔB,对称差的符号在有些图论书籍中也使用符号⊕来表示。...

    codecraft
  • 写让别人能读懂的代码

    写让别人能读懂的代码 随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本。而新功能的开发又常常依赖于旧代码,阅读旧代码所花...

    用户1289394
  • 要不要迎合用户的口味

    今天有人给我留言,大意是说他微信里都是Whatsapp被巨资收购的消息,这么大件事你怎么都不谈啊?还在这扯什么敏捷? 我为什么要谈?一来我不熟,二来我也谈不出个...

    tyrchen
  • php随机数怎么获取?一个简单的函数就能生成

      小美女建了一个站,有些页面相似度比较高,想添加一些字段来实现差异化,比如用php随机数生成从10到100之间随机一个数字。其实会php的朋友几十个字符就能实...

    ytkah
  • 移动端常用的四个框架

    祈澈菇凉
  • 机器学习之K近邻算法

    ---- 概述 AI不断的火起来了,作为工程化的码农,也得奔向国际化轨道了。至于机器学习是什么,不知道找百科。现在大多数机器学习都是采用监督学习形式。我们学习一...

    BrianLv

扫码关注云+社区

领取腾讯云代金券