牛客网刷题-进制转换

问题描述

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

输入描述:
输入一个数字和转换进制

输出描述:
转换后的字符串

示例

示例1

输入
7,2

输出
“111”

解决思路

分析

本题比较简单,主要是考虑好字母的处理以及负数的处理。

方法

  1. 通过从后往前的方式,循环计算每一位数

代码实现

public class Solution {
    
    
    /**
     * 进制转换
     * @param M int整型 给定整数
     * @param N int整型 转换到的进制
     * @return string字符串
     */
    public String solve (int M, int N) {
    
    
        // write code here
        char[] arr = new char[32];
        boolean positiveSign = true;
        // 处理负数的情况
        if (M < 0) {
    
    
            M = -M;
            positiveSign = false;
        }
        int index = arr.length - 1;
        while (M != 0) {
    
    
            // 计算除数
            int divid = M / N;
            // 计算余数
            int rem = M - divid * N;
            // 判断余数,从数组最后赋值
            if (0 <= rem && rem <= 9) {
    
    
                // 0 字符 + 数字 = 字符
                arr[index--] = (char) ('0' + rem);
            } else {
    
    
                // 大写 + 数字 = 大写
                arr[index--] = (char) ('A' + rem - 10);
            }
            // 继续计算除数
            M = divid;
        }
        // 负数添加负号
        if (!positiveSign) {
    
    
            arr[index--] = '-';
        }
        // 截取结果
        return new String(arr, index + 1, arr.length - index - 1);
    }
}

小伙伴如果想测试的话,可以直接到牛客网这个链接做测试

进制转换-牛客网

猜你喜欢

转载自blog.csdn.net/qq_35398517/article/details/112716220