题目
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
示例 1:
输入: num = 100
输出: "202"
示例 2:
输入: num = -7
输出: "-10"
提示:
-10^7 <= num <= 10^7
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/base-7
解题
进制数题目最重要的就是要理解怎么转换的进制,例如十进制转七进制。
七进制的个位是十进制对7取余。
七进制的十位是十进制对7的平方取余,但是要注意把个位数的数减掉。
七进制的百位千位,以此类推,需要注意的是,算七进制当前位置的余数的时候一定要把前面所有七进制位数代表的十进制数减掉再除。
例如:
100 / 7 = 14 ...2
( 100 - 2 ) / 7 / 7 = 2 ...0
2<7 ...2
最后再反转一下就是 202
var convertToBase7 = function (num) {
let flag = '',
i = 0;
let conNum = new Array(10).fill(0);
if (num < 0) {
flag = '-';
num = -num;
do {
conNum[i] = num % 7;
num -= num % 7;
num /= 7;
i++;
} while (num >= 7)
conNum[i] = num;
} else {
do {
conNum[i] = num % 7;
num -= num % 7;
num /= 7;
i++;
} while (num >= 7)
conNum[i] = num;
}
conNum = conNum.reverse();
while (conNum[0] == 0 && conNum.length != 1) {
conNum.shift();
}
for (let i = 0; i < conNum.length; i++) {
flag += conNum[i];
}
return flag;
};