LC 七进制数
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
- 由于返回类型为string,选择string类型来做,另:当给定负整数时(-7),使用int类型不考虑转换进制时前置零的可能,会得到错误结果("-1",正确输出应为"-10")。
- 给定负整数时,先取绝对值,再加负号。
- 可用递归来解…
string convertToBase7(int num){
bool s = false;
if(num == 0){
return "0";
}
if(num < 0){
s = true;
num = -num;
}
string ans;
while(num > 0){
ans.push_back(num % 7 + '0');
num /= 7;
}
if(s){
ans.push_back('-');
}
reverse(ans.begin(),ans.end());
return ans;
}
递归解法
class Solution {
public:
string convertToBase7(int num) {
if (num < 0) return "-" + convertToBase7(-1 * num);
if (num < 7) return to_string(num);
return convertToBase7(num / 7) + to_string(num % 7);
}
};
笔记:
将十进制数转成 XXX 进制数,需要对整数部分和小数部分分别转换。
对于整数部分,转换方式是将十进制数的整数部分每次除以 X 直到变成 0,并记录每次的余数,反向遍历每次的余数即可得到 X 进制表示。
对于小数部分,转换方式是将十进制数的小数部分每次乘以 X 直到变成 0,并记录每次的整数部分,正序遍历每次的整数部分即可得到 X 进制表示。