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
分享
二维码
< <上一篇

)">
下一篇>>