[leetcode] Excel Sheet Column Title (excel表格的数字转字母表示格式) C语言实现

来源:互联网 发布:程序员面试金典 编辑:程序博客网 时间:2024/05/07 08:01

Given a positive integer, return its corresponding column title as appear in an Excel sheet.
for example:

    1 -> A    2 -> B    3 -> C    ...    26 -> Z    27 -> AA    28 -> AB 

题目的意思是:把1-26的数字转换为excel表格的对于列的字符表示形式。
具体思路:可以看出主要是1-26对应A-Z的表示形式,其实就是把10进制转化为26进制,并相应的转化为A-Z个格式来表示。
难点:进制转换是需要注意的地方,选择对26去余(num%26),得到的是0-25之间的值
在leetcode上这个题目的难度系数为easy,下面为C代码:

/** * 对n进行n%26去余再n/26,得0-25个数,即A-Z,所以n%26=0对应'A', * 当n=26时,26%26=0,26/26=1,1%26=1得到的是'AB',不符合,所以应该在每次 * 求余前对n自减1,即n--。 *  * */char *convertToTitle(int n) {    int i = 0;    char *ch = malloc(255);    char *ch1 = malloc(255);    memset(ch, 0, sizeof(ch));    memset(ch1, 0, sizeof(ch1));    while(n > 0){        n--;//这一语句可能不好理解        *(ch + i) = (n%26) + 'A';        i++;        n = n/26;    }    for(i = 0; i < strlen(ch); i++){//去反保存        *(ch1 + i) = *(ch + strlen(ch) -i - 1);    }    free(ch);    return ch1;}
0 0
原创粉丝点击