进制转换

题目描述

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

题解:

看似简单的进制转换套路非常多
1.M是32位整数,有可能是负数,所以还要特判一下
2.N的范围是[2,16],大于10要用ABCD来表示,所以要先建一个char数组方便转换
3.M%N的结果要倒序输出才可以,可以用栈来实现
找到了坑,就好说了
记得返回类型为string

代码:

class Solution {
   
public:
    /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */
    char ch[20]{
   "0123456789ABCDEF"};
    string solve(int M, int N) {
   
        // write code here
        int flag=0;
        
        if(M<0){
   
            M=-M;flag=1;
        }
        stack<char> st;
        while(M){
   
            st.push(ch[M%N]);
            M/=N;
        }
        string s="";
        while(!st.empty()){
   
            s+=st.top();
            st.pop();
        }
        if(flag)s='-'+s;
        return s;
    }
};