鱼C论坛

 找回密码
 立即注册
查看: 3089|回复: 15

[技术交流] 1.Reverse Integer

[复制链接]
发表于 2019-12-7 19:57:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 _2_ 于 2020-2-9 11:59 编辑
  1. """
  2. URL -> https://leetcode.com/problems/reverse-integer/
  3. (From LeetCode)
  4. """
  5. def neverseNum(_input) -> int:
  6.     """
  7.     Neverse Integer\n
  8.     | neverseNum(123) -> 321\n
  9.     | neverseNum(-123) -> -321\n
  10.     | neverseNum(120) -> 21
  11.    
  12.     """
  13.     #Example 1
  14.     if _input > 0 and isinstance(_input / 10,float):
  15.         x = int(str(_input)[::-1])
  16.         return x

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

  22.         #Example 3
  23.         if isinstance(_input,int):
  24.             x = int(str(_input)[1::-1])
  25.             return x

  26. if __name__ == "__main__":
  27.     #Example 1
  28.     neverseNum(123)

  29.     #Example 2
  30.     neverseNum(-123)

  31.     #Example 3
  32.     neverseNum(120)
复制代码


有些复杂......
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-7 20:00:46 | 显示全部楼层
更简洁。

  1. class Solution:
  2.     def reverse(self, num: int) -> int:
  3.         print(str(num)[::-1])
  4.         num = str(num)[::-1].strip("0")
  5.         if num.endswith("-"):
  6.             num = "-" + num[:-1]
  7.         elif not num:
  8.             return 0
  9.         num = int(num)
  10.         if not -2 ** 31 <= num <= 2 ** 31:
  11.             return 0
  12.         return num
  13.         
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 20:03:10 | 显示全部楼层

你做过?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-7 20:03:28 | 显示全部楼层

嗯。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 20:05:05 | 显示全部楼层

嗯,还没有考虑32位的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-7 20:37:43 | 显示全部楼层
也写一个:
  1. class Solution:
  2.     def reverse(self, x: int) -> int:
  3.         lst = [0]
  4.         y = abs(x)
  5.         while y:
  6.             lst.append(y % 10)
  7.             y //= 10
  8.         import functools
  9.         y = functools.reduce(lambda x, y: 10 * x + y, lst)
  10.         y = -y if x < 0 else y
  11.         return y if -2 ** 31 <= y <= 2 ** 31 - 1 else 0
复制代码

  1. class Solution:
  2.     def reverse(self, x: int) -> int:
  3.         y = int(str(abs(x))[::-1])
  4.         y = -y if x< 0 else y
  5.         return y if -2 ** 31 <= y <= 2 ** 31 -1 else 0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 20:41:05 | 显示全部楼层

要是想刷题可以去 LeetCode 官网看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-7 21:00:48 | 显示全部楼层
_2_ 发表于 2019-12-7 20:41
要是想刷题可以去 LeetCode 官网看看

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 19:47:16 | 显示全部楼层

戳这个链接 -> https://leetcode-cn.com/problemset/all/
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 19:47:47 | 显示全部楼层
_2_ 发表于 2020-2-6 19:47
戳这个链接 -> https://leetcode-cn.com/problemset/all/

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 19:48:18 | 显示全部楼层

国内访问速度更快人一步~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 11:34:23 | 显示全部楼层
我也写一个:

  1. class Solution:
  2.     def reverse(self, x: int) -> int:
  3.         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
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:07:50 | 显示全部楼层
我也来
  1. class Solution:
  2.     def reverse(self, x: int) -> int:
  3.         f=False
  4.         if x<0:
  5.             x=-x
  6.             f=True
  7.             
  8.         res=0
  9.         power=0
  10.         while x:
  11.             res=res*10+x%10
  12.             x//=10
  13.         
  14.         if -2147483648<res<2147483647:
  15.             return -res if f else res
  16.         else:
  17.             return 0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:42:13 | 显示全部楼层

你只是用分号将两条语句强制合并在一行了而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 13:11:41 | 显示全部楼层
zltzlt 发表于 2020-3-12 12:42
你只是用分号将两条语句强制合并在一行了而已

对呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-1 12:09:39 | 显示全部楼层

换一个思路,你可以省略result这个额外变量,这样也是一行(直接放表达式)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 23:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表