十进制转N进制的实现

十进制转N进制的实现

今天刷力扣题的时候遇到了一道让我有点手足无措的题目,所以记录一下。并且该方法可以扩展到任意的进制。

力扣上的题目是这样的:

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

示例1:

输入: num = 100
输出: "202"

示例2

输入: num = -7
输出: "-10"

力扣官方给的答案是这样的:

class Solution {
    public String convertToBase7(int num) {
        if (num == 0) {
            return "0";
        }
        boolean negative = num < 0;
        num = Math.abs(num);
        StringBuffer digits = new StringBuffer();
        while (num > 0) {
            digits.append(num % 7);
            num /= 7;
        }
        if (negative) {
            digits.append('-');
        }
        return digits.reverse().toString();
    }
}

但我经过几次数据测试发现,官方的解法可以转换成十进制数据转成N进制的一种通用解决方案。

给定一个整数,转换成对应的N进制,并以字符串的形式输出。

根据官方的思路可以整理出由十进制转换成对应N进制的解决方案。

class Solution {
    public String convertToBaseN(int num,int radix) {
            if(num==0) return "0";
        //存储运算结果
            StringBuilder sb=new StringBuilder();
        //判断num是正数还是负数
            boolean flag=num<0;
        //无论正负,统一对num取绝对值
            num=Math.abs(num);
        //只要num运算之后不为0,则继续做模运算,然后做除法运算,最后将字符串对象反转即可得到对应的N进制字符串结果
            while(num!=0){
                sb.append(num%radix);
                num/=radix;
            }
            if(flag){
                sb.append("-");
            }
            return sb.reverse().toString();
    }
}

十进制转N进制的实现_第1张图片

你可能感兴趣的:(算法,笔记)