进制转换采用除K取余法,余数用栈保存,最后全部出栈,根据出栈的数去取应该转换的数字或者字母。如果是负数则将负数转换成正数,并记flag为true,最后在输出时先判断flag是否为true,如果是的话先加一个负号。
class Solution {
public:
/**
* 进制转换
* @param M int整型 给定整数
* @param N int整型 转换到的进制
* @return string字符串
*/
string solve(int M, int N) {
// write code here
const char base[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
bool flag = false;
if(M < 0)
{
M = -1 * M;
flag = true;
}
stack<int> bit_stack;
while(M)
{
bit_stack.push(M%N);
M /= N;
}
string rst = "";
if(flag)
rst = '-' + rst;
while(!bit_stack.empty())
{
rst.push_back(base[bit_stack.top()]);
bit_stack.pop();
}
return rst;
}
};
京公网安备 11010502036488号