_2_ 发表于 2019-12-7 19:57:33

1.Reverse Integer

本帖最后由 _2_ 于 2020-2-9 11:59 编辑

"""
URL -> https://leetcode.com/problems/reverse-integer/
(From LeetCode)
"""
def neverseNum(_input) -> int:
    """
    Neverse Integer\n
    | neverseNum(123) -> 321\n
    | neverseNum(-123) -> -321\n
    | neverseNum(120) -> 21
   
    """
    #Example 1
    if _input > 0 and isinstance(_input / 10,float):
      x = int(str(_input)[::-1])
      return x

    else:
      #Example 2
      if _input < 0 and isinstance(_input / 10,float):
            x = int("-" + str(_input)[:len(str(_input)) - 1:-1])
            return x

      #Example 3
      if isinstance(_input,int):
            x = int(str(_input))
            return x

if __name__ == "__main__":
    #Example 1
    neverseNum(123)

    #Example 2
    neverseNum(-123)

    #Example 3
    neverseNum(120)

有些复杂......

zltzlt 发表于 2019-12-7 20:00:46

更简洁。

class Solution:
    def reverse(self, num: int) -> int:
      print(str(num)[::-1])
      num = str(num)[::-1].strip("0")
      if num.endswith("-"):
            num = "-" + num[:-1]
      elif not num:
            return 0
      num = int(num)
      if not -2 ** 31 <= num <= 2 ** 31:
            return 0
      return num
      

_2_ 发表于 2019-12-7 20:03:10

zltzlt 发表于 2019-12-7 20:00
更简洁。

你做过?

zltzlt 发表于 2019-12-7 20:03:28

_2_ 发表于 2019-12-7 20:03
你做过?

嗯。

_2_ 发表于 2019-12-7 20:05:05

zltzlt 发表于 2019-12-7 20:00
更简洁。

嗯,还没有考虑32位的问题

冬雪雪冬 发表于 2019-12-7 20:37:43

也写一个:
class Solution:
    def reverse(self, x: int) -> int:
      lst =
      y = abs(x)
      while y:
            lst.append(y % 10)
            y //= 10
      import functools
      y = functools.reduce(lambda x, y: 10 * x + y, lst)
      y = -y if x < 0 else y
      return y if -2 ** 31 <= y <= 2 ** 31 - 1 else 0

class Solution:
    def reverse(self, x: int) -> int:
      y = int(str(abs(x))[::-1])
      y = -y if x< 0 else y
      return y if -2 ** 31 <= y <= 2 ** 31 -1 else 0

_2_ 发表于 2019-12-7 20:41:05

冬雪雪冬 发表于 2019-12-7 20:37
也写一个:

要是想刷题可以去 LeetCode 官网看看

冬雪雪冬 发表于 2019-12-7 21:00:48

_2_ 发表于 2019-12-7 20:41
要是想刷题可以去 LeetCode 官网看看

_2_ 发表于 2020-2-6 19:47:16

冬雪雪冬 发表于 2019-12-7 21:00


戳这个链接 -> https://leetcode-cn.com/problemset/all/

冬雪雪冬 发表于 2020-2-6 19:47:47

_2_ 发表于 2020-2-6 19:47
戳这个链接 -> https://leetcode-cn.com/problemset/all/

谢谢

_2_ 发表于 2020-2-6 19:48:18

冬雪雪冬 发表于 2020-2-6 19:47
谢谢

国内访问速度更快人一步~

一个账号 发表于 2020-3-12 11:34:23

我也写一个:

class Solution:
    def reverse(self, x: int) -> int:
      result = (int(temp) if (temp := str(x)[::-1])[-1] != "-" else int("-" + temp[:-1])) ; return result if result > -2 ** 31 and result < 2 ** 31 - 1 else 0

永恒的蓝色梦想 发表于 2020-3-12 12:07:50

我也来class Solution:
    def reverse(self, x: int) -> int:
      f=False
      if x<0:
            x=-x
            f=True
            
      res=0
      power=0
      while x:
            res=res*10+x%10
            x//=10
      
      if -2147483648<res<2147483647:
            return -res if f else res
      else:
            return 0

zltzlt 发表于 2020-3-12 12:42:13

一个账号 发表于 2020-3-12 11:34
我也写一个:

你只是用分号将两条语句强制合并在一行了而已

一个账号 发表于 2020-3-12 13:11:41

zltzlt 发表于 2020-3-12 12:42
你只是用分号将两条语句强制合并在一行了而已

对呀

lijiachen 发表于 2020-7-1 12:09:39

一个账号 发表于 2020-3-12 13:11
对呀

换一个思路,你可以省略result这个额外变量,这样也是一行(直接放表达式)
页: [1]
查看完整版本: 1.Reverse Integer