数字转换成excel字母

数字转换成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;
}

 

                                                                                  梦想还是要有的,万一实现了呢~~~~~ヾ(◍°∇°◍)ノ゙~~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值