NC112. 进制转换
描述
示例1
输入:
7,2
输出:
"111"
示例2
输入:
10,16
输出:
"A"
C++ 解法, 执行用时: 2ms, 内存消耗: 316KB, 提交时间: 2021-03-03
class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { // write code here if(M == 0) return "0";//如果M=0就直接返回 bool flag = false;//记录是不是负数 if(M < 0){ //如果是负数flag=true,M 取相反数 flag = true; M = -M; } string res = "";//返回最终的结果 string jz = "0123456789ABCDEF";//对应进制的某一位 while(M != 0){//就对应转换为N进制的逆序样子 res += jz[M % N]; M /= N; } reverse(res.begin(),res.end());//逆序一下才是对应的N进制 if(flag) res.insert(0,"-");//如果是负数就在头位置插入一个-号 return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-05-20
class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { // write code here string t="0123456789ABCDEF"; string ans=""; if(M==0) return 0; bool flag=false; if(M<0){ flag=true; M=-M; } while(M){ ans+=t[M%N]; M/=N; } if(flag){ ans+="-"; } reverse(ans.begin(), ans.end()); return ans; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2020-12-02
class Solution { public: string solve(int M, int N) { // write code here string ans; bool flag = 0; if (M<0) { M=-M; flag = 1; } const char* t = {"0123456789ABCDEF"} ; while (M!=0) { ans= t[M%N]+ans; M/=N; } if (flag) { ans = '-'+ans; } return ans; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2021-06-06
class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { // write code here if(M==0)return "0"; if(M==1)return "1"; bool T=true; if(M<0){M=abs(M);T=false;} vector<string>str; for(int i=0;i<10;i++) str.push_back(to_string(i)); str.push_back("A");str.push_back("B");str.push_back("C"); str.push_back("D");str.push_back("E");str.push_back("F"); string res; int i=0; bool flag = false; while(pow(N,i)<M) i++; while(i>=0){ int k=N-1; while(k*pow(N,i)>M&&k>0)k--; M-=k*pow(N,i); res+=str[k]; i--; } reverse(res.begin(),res.end()); while(res.back()=='0')res.pop_back(); if(!T)res.push_back('-'); reverse(res.begin(),res.end()); return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2021-03-28
class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { // write code here unordered_map<int,char> a; int flag = 0; if(M < 0) flag = 1; M = abs(M); for(int i = 0; i < N; i++){ if(i >= 0 && i <= 9) a[i] = (char)('0'+i); else a[i] = (char)('A'+i-10); } string ans = ""; int tmp = M; while(M){ int mod = M % N; ans.insert(ans.begin(), a[mod]); M = M / N; } if(flag) ans.insert(ans.begin(), '-'); return ans; } };