数字转换成excel字母
给定正整数,返回Excel工作表中显示的相应的列。
【例如】
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
解题算法 -- accept
对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--。
#define swap(a,b,t) (t=a,a=b,b=t)
/**把字符串做翻转**/
void reverse_str(char* str, int left, int right)
{
if(str==NULL || left > right) return;
char temp;
while(left<right)
{
swap(str[left], str[right], temp);
left++;
right--;
}
}
char* convertToTitle(int n) {
/**用于存结果字符**/
char* str = (char*)malloc(255*sizeof(char));
int i = 0; //str的游标
while(n>=1)
{
n--;
str[i++] = n%26+'A';
n = n/26;
}
str[i] = '\0';
reverse_str(str,0,strlen(str)-1);
return str;
}
梦想还是要有的,万一实现了呢~~~~~ヾ(◍°∇°◍)ノ゙~~~~~~~~~~~