在代码实现上,输入 num 代表我们思路中的十进制表示 num}_{10,我们需要将还原出的 num}_7 以字符串的形式返回。
当输入为负时,我们可以先取 num 的绝对值来求七进制,最后再添加负号。
代码
[sol1-Python3]
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution: defconvertToBase7(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))
[sol1-Java]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution { public String convertToBase7(int num) { if (num == 0) { return"0"; } booleannegative= num < 0; num = Math.abs(num); StringBufferdigits=newStringBuffer(); while (num > 0) { digits.append(num % 7); num /= 7; } if (negative) { digits.append('-'); } return digits.reverse().toString(); } }
funcconvertToBase7(num int)string { if num == 0 { return"0" } negative := num < 0 if negative { num = -num } s := []byte{} for num > 0 { s = append(s, '0'+byte(num%7)) num /= 7 } if negative { s = append(s, '-') } for i, n := 0, len(s); i < n/2; i++ { s[i], s[n-1-i] = s[n-1-i], s[i] } returnstring(s) }
复杂度分析
时间复杂度:O(\log |\textit{num}|),其中 |\textit{num}| 表示 num 的绝对值。循环中最多做 O(\log |\textit{num}|) 次除法。