给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。
若 M 为负数,应在结果中保留负号。
数据范围:
要求:空间复杂度,时间复杂度
java:
import java.util.*;
public class Solution {
/**
* 进制转换
* @param M int整型 给定整数
* @param N int整型 转换到的进制
* @return string字符串
*/
public String solve (int M, int N) {
// write code here
if(M ==0) return "0";
String s = "0123456789ABCDEF";
StringBuffer res = new StringBuffer();
boolean sign = true;
if(M<0){
sign = false;
M = -M;
}
while(M != 0){
res.append(s.charAt(M%N));
M = M/N;
}
if(sign == false){
res.append("-");
}
return res.reverse().toString();
}
}
注意:
- M也可能是负数,注意符号
- 将N进制的表示用s存储,解决ABCDEF的问题