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