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)
有些复杂...... 更简洁。
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
zltzlt 发表于 2019-12-7 20:00
更简洁。
你做过? _2_ 发表于 2019-12-7 20:03
你做过?
嗯。 zltzlt 发表于 2019-12-7 20:00
更简洁。
嗯,还没有考虑32位的问题 也写一个:
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 冬雪雪冬 发表于 2019-12-7 20:37
也写一个:
要是想刷题可以去 LeetCode 官网看看 _2_ 发表于 2019-12-7 20:41
要是想刷题可以去 LeetCode 官网看看
嗯 冬雪雪冬 发表于 2019-12-7 21:00
嗯
戳这个链接 -> https://leetcode-cn.com/problemset/all/ _2_ 发表于 2020-2-6 19:47
戳这个链接 -> https://leetcode-cn.com/problemset/all/
谢谢 冬雪雪冬 发表于 2020-2-6 19:47
谢谢
国内访问速度更快人一步~ 我也写一个:
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 我也来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 一个账号 发表于 2020-3-12 11:34
我也写一个:
你只是用分号将两条语句强制合并在一行了而已 zltzlt 发表于 2020-3-12 12:42
你只是用分号将两条语句强制合并在一行了而已
对呀 一个账号 发表于 2020-3-12 13:11
对呀
换一个思路,你可以省略result这个额外变量,这样也是一行(直接放表达式)
页:
[1]