/** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ public String solve (int M, int N) { boolean positive = true; if(M < 0) { positive = false; M = Math.abs(M); } String[] chars = {"1", "2", "3", "4", "5", "6", "7","8", "9","10", "A", "B","C", "D","E","F"}; // write code here StringBuilder buffer = new StringBuilder(""); if(N == 10) { return String.valueOf(M); } LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>(); int max = 0; while(M > 0) { int num = 0; int cur = M; while(cur >= Math.pow(N, num)) { num ++; } if(num > 1) { int d = M / (int) Math.pow(N, num - 1); M = M - d * ((int) Math.pow(N, num - 1)); map.put(num - 1, d); max = Math.max(max, num - 1); } else { map.put(num - 1, M); break; } } /** * key: 位置 * value: 放的数据 */ if(!positive) { buffer.append("-"); } for(int i = max; i >= 0; i --) { Integer integer = map.get(i); if(integer != null) { if(integer > 10) { buffer.append(chars[integer]); } else { buffer.append(integer); } } else { buffer.append("0"); } } return buffer.toString(); }