116 字 少于 1 分钟阅读

题目

十进制转为 36 进制:1,2,3,4,5,6,7,8,9,A,B,C…X,Y,Z,10

示例1:

输入:80
输出:28

解法

10进制转成36进制的过程为:\(n = x_n * 36^n + x_{n-1} * 36^{n-1} + ... + x_1 * 36^1 + x_0 * 36^0\)

辗转相除

public class Solution {

    public static String trans(int num) {
        int tmp = 1;
        int n = 0;
        StringBuilder res = new StringBuilder();
        while (num >= 36) {
            while (tmp <= num) {
                tmp *= 36;
            }
            tmp /= 36;
            n = num / tmp;
            res.append(transSingleNum(n));
            num -= n * tmp;
            tmp = 1;
        }
        res.append(transSingleNum(num));
        return res.toString();
    }

    public static String transSingleNum(int num) {
        // 将10进制下 36 以内的数字转成 36 进制
        if (num < 10) {
            return String.valueOf(num);
        }
        return String.valueOf((char) ('A' + (num - 10)));
    }

}