2025年3月14日 星期五 甲辰(龙)年 月十三 夜 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:12-09来源:作者:点击数:15

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!!')

执行结果:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐