给你一个整数 columnNumber
,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
示例 1:
输入:columnNumber = 1 输出:"A"
示例 2:
输入:columnNumber = 28 输出:"AB"
示例 3:
输入:columnNumber = 701 输出:"ZY"
示例 4:
输入:columnNumber = 2147483647 输出:"FXSHRXW"
提示:
1 <= columnNumber <= 231 - 1
char * convertToTitle(int n){
static char ans[32]; //n <= 2^31 - 1
//因为要将其返回,所以定义为静态变量,否则函数结束则变量被销毁
int p=31;
ans[p]='\0'; //不要忘记字符串数组结尾标识符
while(n)
{
ans[--p]='A'+ (n-1)%26;
n=(n-1)/26;
}
//n-1是因为列表是从1开始的,而编程习惯于从0开始,比如若第一列是0,则第701列就是700
//本题的本质就是进制转换,只是进制是26,只要涉及进制转换就是先%后/
//注意这里是从后往前放置,因此最后传址要传&ans[p]:第p个元素的地址
//若传址&ans,则是数组首地址
return &ans[p]; //直接传地址,注意这里&ans[p]和&ans的意义完全不同
}