CF进制转换专题进阶
168. Excel表列名称
进制转换
题目链接
十进制转二十六进制数。不同的是常规的二十六进制数是满二十六进位,这个是二十六作为最后一个数字,多以用一个小标志特判了一下
class Solution {
public:
string convertToTitle(int columnNumber) {
unordered_map<int,char>mp;
int k=0;
string ch;
for(int i=0;i<26;i++) mp[i+1]=i+'A';
if(columnNumber%26==0) k=1;
mp[0]='Z';
while(columnNumber)
{
ch=mp[columnNumber%26]+ch;
if(columnNumber==26) break;
columnNumber/=26;
if(columnNumber) columnNumber-=k;
}
return ch;
}
};
官方题解
一样的思路,不过人家的代码要比我的简洁许多
官方题解链接
class Solution {
public:
string convertToTitle(int columnNumber) {
string ans;
while (columnNumber > 0) {
--columnNumber;
ans += columnNumber % 26 + 'A';
columnNumber /= 26;
}
reverse(ans.begin(), ans.end());
return ans;
}
};
171. Excel 表列序号
进制转换
上一题的逆过程
class Solution {
public:
int titleToNumber(string columnTitle) {
unordered_map<char,int>mp;
for(int i=0;i<26;i++) mp[i+'A']=i+1;
int res=0;
for(int i=0;i<columnTitle.size();i++)
{
res=res*26+mp[columnTitle[i]];
}
return res;
}
};
483. 最小好进制
数学永远是硬伤wuwuwu~看了几篇题解总算是懂了。我也不献丑放我的代码了放一个我个人觉得写得特别好的题解吧
@zerotrac(思路贼清晰)
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码