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

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;
}

你可能感兴趣的:(leetcode)