题目

题目来源:力扣(LeetCode)

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

示例 1:

输入: num = 100
输出: “202”

示例 2:

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

思路分析

10 进制转化任意进制的思路都是除 x 取余,其中 x 为进制数,比如 2 进制就是 除 2 取余,7 进制就是除 7 取余。

比如一个数 4321 ,需要转化为 7 进制。那么可以:

先将 4321 除以 7,其中余数为 0 , 除数为 616
继续将 616 采用同样的方法直到小于 7
将此过冲的余数反序就是答案了。图解:
image.png
(图片来自网络)

如图,4312 的 7 进制就是 15400。

关键点
除 x 取余,并逆序输出

  1. /**
  2. * @param {number} num
  3. * @return {string}
  4. */
  5. var convertToBase7 = function (num) {
  6. let next = Math.abs(num)
  7. let res = ''
  8. while (next >= 7) {
  9. res = next % 7 + res
  10. next = next / 7 | 0
  11. }
  12. res = next + res
  13. return num < 0 ? '-' + res : res
  14. };