【数学】力扣504:七进制数
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
示例:
输入: num = -7
输出: "-10"
进制转换类型的题,通常是利用除法和取模(mod)来进行计算,同时也要注意一些细节,如负数和零。
如果输出是数字类型而非字符串,则也需要考虑是否会超出整数上下界。
class Solution:
def convertToBase7(self, num: int) -> str:
# num 为 0 时的情况
if num == 0:
return "0"
# num为负数的情况
# num = abs(num)
if num < 0:
num = -num
res = "" # 放在循环外面
while num:
'''
res = str(num % 7) + res
num = num // 7
'''
a, b = num // 7, num % 7
res = str(b) + res
num = a
return "-" + res if num < 0 else res # 给负数的num加上负号
时间复杂度:O(log∣num∣),其中 ∣num∣ 表示 num 的绝对值。循环中最多做O(log∣num∣) 次除法。
空间复杂度:O(log∣num∣)。字符数组的长度最多为O(log∣num∣)。部分语言可以直接修改字符串,空间复杂度为 O(1)。
可以用python特殊方法解决数字转字符串问题:
class Solution:
def convertToBase7(self, num: int) -> str:
if num == 0:
return "0"
negative = num < 0
num = abs(num)
digits = []
while num:
digits.append(str(num % 7))
num //= 7
if negative:
digits.append('-')
return ''.join(reversed(digits))
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/base-7/solution/qi-jin-zhi-shu-by-leetcode-solution-cl2v/
一行代码:
class Solution:
def convertToBase7(self, num: int) -> str:
return ("-" if num < 0 else "") + self.convertToBase7(d) + str(a % 7) if (d := (a := abs(num)) // 7) > 0 else str(num)
作者:himymBen
链接:https://leetcode-cn.com/problems/base-7/solution/kao-gu-tie-ge-lao-ti-jie-de-jian-ji-ban-16mtv/

浙公网安备 33010602011771号