leetcode刷题日记:168. Excel Sheet Column Title(Excel表列名称)

我不知道你看到这一道题目有什么感觉,我先告诉你我有什么感觉,在此之前我再给你写一组有相同模式的数字。


你先告诉我你有什么感觉,有没有感觉,没有感觉的话,那我们就来更深的了解一下:

我们分析最后一个,因为这些模式都是一样的。

可以看出

这一组数字中字符集为 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } \{1, 2, 3, 4, 5, 6, 7, 8, 9\} {1,2,3,4,5,6,7,8,9}

我们将字符集换成 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 } \{0, 1, 2, 3, 4, 5, 6, 7, 8\} {0,1,2,3,4,5,6,7,8}则上图可以转化为:

我们再将->右边的值统一减1看看变成什么:

现在你有没有感觉,这是什么?是不是9进制,也就是说这一组中字符集为 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } \{1, 2, 3, 4, 5, 6, 7, 8, 9\} {1,2,3,4,5,6,7,8,9}构造出来的数字等价于9进制系统。

同理我们也可以分析得到由字符集 { A , B , C . . . . . . Z } \{A,B,C......Z\} {A,B,C......Z}构造出来的系统等价于26进制系统。如此一来就转化为了如何将数字按照进制数字转化得到每一位了。

根据上面的思路,我们可以写出下述代码:

c 复制代码
char* convertToTitle(int columnNumber) {
    char * answer = (char *)malloc(sizeof(char)*20);
    int length = 0;
    while((columnNumber!=0)){
        columnNumber -= 1; //是为了从0开始进行对应.
        answer[length] = columnNumber%26+'A';
        length ++;
        columnNumber/=26;
    }
    if(!length){
        answer[length++] = 'A';
    }
    answer[length] = '\0';
    for(int i=0; i<length/2;i++){
        char t = answer[i];
        answer[i] = answer[length-i-1];
        answer[length-i-1] = t;
    }
    return answer;
}

运行结果截图:

相关推荐
Fox爱分享11 分钟前
字节二面智力题:100只老虎和1只羊关在一起,这只羊会不会被吃?
算法·面试·程序员
xin(n_n)b1 小时前
经典题目(3):把数字翻译成字符串;兑换零钱
算法
惊鸿一博1 小时前
特征匹配+Glue Factory 框架评估特征提取与匹配算法时常用的度量标准
算法·特征匹配
柒和远方1 小时前
LeetCode 4. 寻找两个正序数组的中位数 —— 二分划分的艺术
javascript·python·算法
hai3152475431 小时前
九章空间几何对照直译法:通用芯片 / 定制专用芯片 编译适配规则
linux·汇编·bash
ton_tom2 小时前
设备驱动程序编程-Linux2.6.10-kdb安装-32位
linux·运维·服务器
dddwjzx2 小时前
嵌入式Linux C应用编程入门——进程 ( 二 )
linux·嵌入式
z小猫不吃鱼2 小时前
模型剪枝经典论文精读:Channel Pruning for Accelerating Very Deep Neural Networks
算法·机器学习·剪枝
njsgcs2 小时前
已知链中心距用节数算中间电机摆放位置 常量弧长 三链轮弦长模型算法
算法
2601_962440843 小时前
计算机毕业设计之jsp旅游网站管理系统
java·开发语言·算法·课程设计·旅游·推荐算法