原题网址:https://www.lintcode.com/problem/hex-conversion/description
描述
给定一个十进制数 n
和 一个整数 k
, 将 十进制数 n
转换成 k进制数
.
1.0<=n<=2^31-1
, 2<=k<=16
2.每个大于 9 的字符都用大写字母
表示
您在真实的面试中是否遇到过这个题?
样例
样例 1:
给定 n
= 5
, k
= 2
return "101"
样例 2:
给定 n
= 30
, k
= 16
return "1E"
思路:用一个具有16个元素的一维char数组保存k进制数的字符,用每次n对k取余得到的结果作为下标访问一维数组,即可得到该数位上的相应字符。
AC代码:
class Solution {
public:
/**
* @param n: a decimal number
* @param k: a Integer represent base-k
* @return: a base-k number
*/
string hexConversion(int n, int k) {
// write your code here
if (n==0)
{
return "0";
}
int ch[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
string result="";
int mod=0;
while(n!=0)
{
mod=n%k;
n=n/k;
result.push_back(ch[mod]);
}
reverse(result.begin(),result.end());
return result;
}
};