【问题标题】:Reverse digits of an integer in Python [duplicate]Python中整数的反转数字[重复]
【发布时间】:2018-09-26 12:42:08
【问题描述】:

给定一个 32 位有符号整数,反转整数位。

示例 1:

输入:123 输出:321

示例 2:

输入:-123 输出:-321

示例 3:

输入:120 输出:21

假设我们正在处理的环境只能存储 32 位有符号整数范围内的整数:[−2^31, 2^31 − 1]。为了解决这个问题,假设你的函数在反转整数溢出时返回 0。

我正在尝试解决反转 int 问题,但以下解决方案因以下输入而失败。

输入: 1534236469

输出: 9646324351

预期: 0

在我的解决方案中,我正在检查给定的 int 是否大于最大值或最小值,然后检查它是否为负数。

我的解决方案

import sys
class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x <sys.maxsize-1  or x > -sys.minsize:

            if str(x)[0] == '-':
                list_mod = list(str(x))
                list_mod.pop(0)
                list_mod.append('-')
                list_mod.reverse()
                join_list = ''.join(list_mod[:])
                return int(join_list)
            else:
                return int(str(x)[::-1])
        else:
            return 0

【问题讨论】:

  • 你正在测试——并且拒绝——太快了。 1534236469 适合带符号的 int,但它的反向不适合。
  • @usr2564301,那么我应该如何处理这种情况。
  • 原版可以通过这个测试吗?然后在之前测试(就像你正在做的那样)。但是倒车后也要测试。但顺便说一下,我不太确定你的测试是否正确。

标签: python


【解决方案1】:

尝试将 int 转换为 string,然后将 reverse 转换为 int

例如:

a = 1534236469
print(int(str(a)[::-1]))

输出:

9646324351

处理负数:

if str(a).startswith("-"):
    a = a[1:]
    print("-{0}".format(int(str(a)[::-1])))
else:
    print(int(str(a)[::-1]))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 2015-09-17
  • 2019-11-08
  • 2013-04-15
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多