牛客题霸 [进制转换] C++题解/答案

进制转换

题目描述

给定一个十进制数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;
    }
};
posted @ 2020-11-05 11:19  回归梦想  阅读(99)  评论(0编辑  收藏  举报