python123数字转换_python3基础,将数字倒置(321转换为123、120转换为21 、 -1234转换为-4321 ),并添加测试用例...

"""

Filename: solution.py

Created on Thu Mar 28 11:06:08 CST 2019

将321转换为123、 120转换为21 、 -1234转换为-4321 ,数值介于-2**31和2**31-1否则结果为0

"""

# 方法一

class Solution1:

def reverse(self, x: int) -> int:

# 算法写在这里

# ret = 0

# 先将其用绝对值转换成字符串并转置成列表

step_1 = list(reversed(str(abs(x))))

# 判断x是正值还是负值

if x >= 0:

ret = int(''.join(step_1))

else:

ret = int('-' + str(int(''.join(step_1))))

if ret > pow(2, 31)-1 or ret < -pow(2, 31):

return 0

return ret

# 方法二

class Solution2:

def reverse(self, x: int) -> int:

# 算法写在这里

# ret = 0

# 先取正

x_ = abs(x)

length = len(str(x_))

# 存结果

lis = []

for i in range(length):

# 取出每一位的值

step_1 = str(x_ // 10 ** i % 10)

lis.append(step_1)

if x >=0:

ret = int(''.join(lis))

else:

ret = int(('-' + str(int(''.join(lis)))))

if ret > pow(2, 31)-1 or ret < -pow(2, 31):

return 0

return ret

# 方法三

class Solution3:

def reverse(self, x: int) -> int:

# 算法写在这里

ret = 0

# 或者 step_1 = x if x > 0 else -x

step_1 = abs(x)

while step_1 != 0:

# 0*10 >> 0 乘

# 123%10 >> 3 取余

# 0+3 >> 0 相加

# 123//10 >> 12 整除

# 3*10 >> 30

# 12%10 >> 2

# 30+2 >> 32

# 12//10 >> 1

# 32*10 >> 320

# 1%10 >> 1

# 320+1 >> 321

# 1//10 >> 0

ret *= 10

ret += step_1%10

step_1 = step_1 // 10

ret = ret if x > 0 else -ret

if ret > pow(2, 31)-1 or ret < -pow(2, 31):

return 0

return ret

# 方法四

class Solution4:

def reverse(self, x: int) -> int:

rev = str(abs(x))[::-1]

sign = '' if x > 0 else '-'

ret = int(''.join([sign, rev]))

if ret > pow(2, 31)-1 or ret < -pow(2, 31):

return 0

return ret

# ===============================================================================

# Test

# ===============================================================================

test = {

123: 321,

-123: -321,

120: 21,

0: 0,

-100: -1,

1534236469: 0,

}

sol = Solution4()

for k, v in test.items():

res = sol.reverse(k)

print('-' * 80)

print('Input:', k)

print('Correct:', v)

print('Output:', res)

if res == v:

print('Passed>>>^_^')

else:

print('ERROR:Wrong!!')

执行结果:

32f5689dfe534785b39629c5fa893e85.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值