Leetcode刷题 (Python)504 七进制数

题目描述:
给定一个整数,将其转化为7进制,并以字符串形式输出。

示例 1:

输入: 100
输出: “202”

示例 2:

输入: -7
输出: “-10”

注意: 输入范围是 [-1e7, 1e7] 。

解题思路:
此题可用递归来解决,递归三定律为:

  1. 递归算法必须具有基本情况。
  2. 递归算法必须改变其状态并向基本情况靠近。
  3. 递归算法必须以递归方式调用自身。

那么:
1、基本情况为小于7整数的7进制和10进制相同。
2、用此数整除7加上此数求余7,即num//7+num%7,可以向基本情况靠近
3、调用递归函数自身来完成。

但是Python的整除和求余是向下取整的,导致小于0的整数,整除和求余的结果是异常的,所以要把小于0的情况单独处理。即取整此数除以7的值代替整除加上此数相应的整数求余,int(num/7)+(-num)%7

代码实现:

class Solution:
    def convertToBase7(self, num: int) -> str:
        if num >= 0:
            if num < 7:
                return str(num)
            else:
                return self.convertToBase7(num//7)+str(num%7)
        else:
            if abs(num)<7:
                return str(num)
            else:
                return self.convertToBase7(int(num/7))+str(-num%7)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值