题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1
模拟取余算法;
import java.util.*;
public class Solution {
/**
* 进制转换
* @param M int整型 给定整数
* @param N int整型 转换到的进制
* @return string字符串
*/
public String solve (int M, int N){
// write code here
//记录转换后的字符串
StringBuilder sb=new StringBuilder();
//用于表示大于10的情况
char[] arr={'A','B','C','D','E','F'};
//判断是否为负数
boolean f=false;
if(M<0){
//测试用例里不包含Integer.MIN_VALUE,所以可以这么写
M=-M;
f=true;
}
while(M!=0){
//记录每一次除N的余数
int temp=M%N;
//大于等于10,加对应的字母
if(temp>=10){
sb.append(arr[temp-10]);
}
//小于10,直接加到sb
else{
sb.append(temp);
}
M/=N;
}
//负数要多加一个负号
if(f){
sb.append('-');
}
//反转后转为字符串返回
return sb.reverse().toString();
}
}