题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1
#include <algorithm> #include <string> #include <unordered_map> #include <vector> class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { if (!M) { return "0"; } unordered_map<int, char> trans; for (int i = 0; i < 9; ++i) { trans[i] = '0' + i; } for (int i = 10; i < 16; ++i) { trans[i] = 'A' + i - 10; } string res; bool sig = true; if (M < 0) { sig = false; M = -M; } while (M) { res += trans[M % N]; M /= N; } if (!sig) { res += '-'; } reverse(res.begin(), res.end()); return res; } };
思路:模拟进制转换即可解决。因为超过十进制的话需要字母A~E,所以用哈希表提前建立好映射。