进制转换--力扣第504题

题目:

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

分析:

核心就是十进制转换为七进制,做法就是利用/和%这两个运算符,%为了计算当前进制位应该表示为几(从右向左),/是为了从左向右计算在当前的进制位下是否应该继续向左延申,即如果在截止到当前进制位表达不够输入的十进制数,

那就要向左延申进制位,每次延申都会除以7,除以7是因为逢7进位。

比如  100转为7进制数,

  100%7=2,100/7=14,当前进制位是七进制数第一位,该位数值是2

  14%7=0,14/7=2,当前进制位是七进制第二位,由于余数为0,该位数值为0

  此时 2 > 7,停止循环,最终的100的七进制数就是202

具体的代码实现如下:

    public String convertToBase7(int num) {
        if (num < 7 && num > -7){
            return num+"";
        }
        int flag = 0;
        if (num < 0){
            flag = 1;
            num = Math.abs(num);
        }
        StringBuilder res = new StringBuilder("");
        int y = num % 7;
        int n = num / 7;
        res = res.append(y);
        while(n >= 7){
            y = n % 7;
            n = n / 7;
            res.append(y);
        }
        res.append(n);
        if (flag == 1){
            res.append('-');
        }
        return res.reverse().toString();
    }

 

此外,Java很贴心,Integer类自带了有将一个十进制数转为指定进制数,并转换为字符串的函数,即 static String toString(int num, int radix) 可以将一个整数转换为 radix 进制表示的字符串。

public String convertToBase7(int num) {
    return Integer.toString(num, 7);
}

 

posted @ 2020-05-26 23:10  有心有梦  阅读(291)  评论(0编辑  收藏  举报