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