进制转换
题目描述
给定一个十进制数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 hereint 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;}
};