#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,所以用哈希表提前建立好映射。

京公网安备 11010502036488号