解题思路:可以用栈来存储每次的余数;也可直接用StringBuilder,之后用reverse()方法反转字符串。注意:M为0、负数、正数的三种情况,以及十进制以上的转化情况。例:11进制中,10用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
        Stack<Integer> s=new Stack();
        if(M==0){
            return "0";
        }
        StringBuilder str=new StringBuilder();
        if(M<0){
            str.append("-");
        }
        M=Math.abs(M);
        while(M!=0){
            s.push(M%N);
            M=M/N;
        }
        int n=s.size();
        for(int i=0;i<n;i++){
            if(s.peek()>9){
                str.append((char)(s.pop()-10+'A'));
            }
            else{
                str.append(s.pop());
            }
        }
        return String.valueOf(str);
    }
}