问题描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入一个数字和转换进制
输出描述:
转换后的字符串
示例
示例1
输入
7,2
输出
“111”
解决思路
分析
本题比较简单,主要是考虑好字母的处理以及负数的处理。
方法
- 通过从后往前的方式,循环计算每一位数
代码实现
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);
}
}
小伙伴如果想测试的话,可以直接到牛客网这个链接做测试