🚩传送门:牛客题目
题目
给定一个十进制数 ,以及需要转换的进制数
,将十进制数
转化为
进制数。
当
大于 10 以后, 用大写字母表示大于
10
的一位如
'A'
表示此位为10
,'B'
表示此位为11
,'B'
表示为15
若
为负数,应在结果中保留负号
要求:空间复杂度 ,时间复杂度
解题思路:模拟
除
取余,然后逆序 。
复杂度分析
时间复杂度:
空间复杂度:
官方代码
public class Solution {
public String solve (int M, int N) {
if(M==0)return "0";
String reference="0123456789ABCDEF";
StringBuffer ans=new StringBuffer();
boolean f=true;
//1. 负数变正
if(M<0){
M=-M;
f=false;
}
//2. 取余相除
while(M!=0){
ans.append(reference.charAt(M%N));
M/=N;
}
//3. 负数加负号
if(!f) ans.append("-");
//4. 逆序
return ans.reverse().toString();
}
}