题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入 :7,2
返回值 : “111”
题目不难,要考虑细节,比如10要用A表示,11用B表示,还要小心数字的正负;
-
就是不断求余的过程,比如17转3进制,
-
17%3=2,用17/3=5的商继续做被除数,
-
5%3=2,用5/3=1的商继续做被除数,
-
1%3=1, 1/3=0,商为0结束,
-
-把所有的余数串起来,2,2,1翻过来122就是所求的三进制=>2 * 3^0 + 2 * 3^1 + 1 * 3 ^2==17
-
char[] index = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};来映射进制
-
负数的秋余操作把负数取出,然后按正数操作即可
import java.util.*;
public class Solution {
/**
* 进制转换
* @param M int整型 给定整数
* @param N int整型 转换到的进制
* @return string字符串
*/
public String solve (int M, int N) {
// write code here
StringBuffer str = new StringBuffer();
char[] index = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
boolean flag = false;
if(M <0){
flag = true;
M = -M;
}
while(M != 0){
int remain = M % N;
str.insert(0,index[remain]);
M /= N;
}
if(flag) str.insert(0,'-');
return str.toString();
}
}