题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1
进制转换采用除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; } };