给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。
若 M 为负数,应在结果中保留负号。
数据范围:
要求:空间复杂度
,时间复杂度
7,2
"111"
10,16
"A"
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { // write code here //判断是否为0 if(M == 0) { return "0"; } String table = "0123456789ABCDEF"; StringBuilder str = new StringBuilder(); boolean flag = false; if(M < 0) { M = -M; flag = true; } while(M != 0) { str.append(table.charAt(M % N)); M /= N; } if(flag == true) { str.append("-"); } str.reverse(); return str.toString(); } }
public String solve (int M, int N) { // write code here String pre=M>=0?"":"-"; M=Math.abs(M); StringBuilder sb=new StringBuilder(); while(M>0){ int num=M%N; if(num<10){ sb.append(num); }else{ sb.append((char)('A'+num-10)); } M/=N; } return pre+sb.reverse(); }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { // write code here boolean tag = false; if (M < 0) { M = -M; tag = true; } String s = "0123456789ABCDEF"; StringBuffer res = new StringBuffer(); while (M != 0) { res.append(s.charAt( M % N)); M = M / N; } if (tag) { res.append("-"); } res.reverse(); return res.toString(); } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { // write code here String hex = "0123456789ABCDEF"; StringBuilder sb = new StringBuilder(); int X = Math.abs(M); while(X / N != 0){ sb.insert(0,hex.charAt(X % N)); X = X / N; } sb.insert(0,X); if(M < 0){ sb.insert(0,"-"); } return sb.toString(); } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { // write code here return Integer.toString(M,N).toUpperCase(); } }
import java.util.*; public class Solution { public String solve (int M, int N) { if(M < 0) return "-" + solve(-1 * M, N); String[] dic = new String[]{"0", "1", "2", "3", "4", "5", "6", "7","8", "9", "A", "B", "C", "D", "E", "F"}; String res = new String(); int temp; while(M > 0) { temp = M % N; res = dic[temp] + res; M = M / N; } return res; } }
import java.util.*; public class Solution { /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { boolean isNegative = false; if(M < 0) { isNegative = true; M = -M; } char[] map = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; StringBuilder sb = new StringBuilder(); int remainder = 0; while(M != 0) { sb.insert(0, map[M % N]); M /= N; } String res = sb.toString(); return isNegative ? "-" + res : res; } }
import java.util.*; public class Solution { public String solve (int M, int N) { // write code here return Integer.toString(M, N).toUpperCase(); } }
使用字符的数值规律解决num的情况。 import java.util.*; public class Solution { /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { String res = ""; boolean sign = false; if (M < 0) { M = -M; sign = true; } while (M != 0) { int num = M % N; if (num >= 10) { char mid = (char)('A' + num - 10); res = mid + res; } else { res = num + res; } M = M / N; } if (sign) { return "-" + res; } return res; } }
import java.util.*; public class Solution { /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { if(M==0){ return "0"; } char[] nums = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; StringBuilder sb = new StringBuilder(); boolean flag = M<0; M = Math.abs(M); while(M>0){ sb.append(nums[M%N]); M/=N; } String res = sb.reverse().toString(); return flag?"-"+res:res; } }
public class Solution { char[] table = new char[]{'A', 'B', 'C', 'D', 'E', 'F'}; public String solve (int M, int N) { // write code here StringBuffer result = new StringBuffer(); int m; if (M < 0) { m = -M; } else { m = M; } while (m != 0) { int cur = m % N; if (cur > 9) { result.append(table[cur - 10]); }else { result.append(cur); } m /= N; } if(M < 0) { result.append('-'); } return result.reverse().toString(); } }
import java.util.*; public class Solution { //建立映射关系 public String[] mapping = {"0","1","2","3","4","5","6","7","8","9", "A","B","C","D","E","F"}; /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ //循环 /*public String solve(int M,int N){ // write code here StringBuilder sb = new StringBuilder(); int insert = 0; if(M < 0){ sb.append("-"); M *= -1; insert = 1; } solve(M,N,sb,insert); return sb.toString(); } public void solve(int M,int N,StringBuilder sb,int insert){ while (M!=0){ sb.insert(insert,mapping[M%N]); M/=N; } }*/ //递归 public String solve(int M,int N) { // write code here StringBuilder sb = new StringBuilder(); if(M < 0){ sb.append("-"); M *= -1; } solve(M,N,sb); return sb.toString(); } public void solve(int M,int N,StringBuilder sb){ if(M==0)return; sb.append(solve(M/N,N)); sb.append(mapping[M%N]); } }
import java.util.*; public class Solution { public String solve (int M, int N) { if(M == 0) return "0"; int flag = 1; if (M < 0){ flag = -1; M = Math.abs(M); } char[] charOfNums = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int curNum = M; StringBuilder builder = new StringBuilder(); while(curNum > 0){ builder.insert(0, charOfNums[curNum % N]); curNum = curNum / N; } return flag == 1 ? builder.toString() : "-" + builder.toString(); } }