《leetCode》:Excel Sheet Column Title

本文介绍了一种将正整数转换为其对应的Excel列标题的方法,包括C和Java两种语言的实现代码。对于26的倍数进行了特殊处理,并通过字符串翻转实现了正确的输出。

题目

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 

思路

通过对整数不断除26即可完成。但是要注意一下,当整数为26的整倍数时,要做一点特殊的处理。

实现代码如下:

#define N  100
void swap(char *a,char *b){
    int temp=*a;
    *a=*b;
    *b=temp;
}
char* convertToTitle(int n) {
    if(n<1){
        return NULL;
    }
    char *res=(char *)malloc(N*sizeof(char));
    if(res==NULL){
        exit(EXIT_FAILURE);
    } 
    int index=0;
    while(n){
        int temp=n%26;  
        if(temp==0){//注意:要对26 的整倍数做一点特殊处理 
            res[index++]='Z';
            n=(n/26)-1;
        }
        else{
            res[index++]='A'+temp-1;
            n=n/26; 
        }                           
    }
    //将res翻转就是最后的结果
    int begin=0;
    int end=index-1;
    while(begin<end){
        swap(res+begin,res+end);
        begin++;
        end--;
    } 
    res[index]='\0';
    return res;
}

java实现代码如下:

public String convertToTitle(int n) {
       if(n<1){
           return null;
       }
       char []alph="ZABCDEFGHIJKLMNOPQRSTUVWXY".toCharArray();
       StringBuffer sb=new StringBuffer();
       while(n!=0){
           int temp=n%26;
           sb.insert(0, alph[temp]);
           if(temp==0){
               n-=26;
           }
           n/=26;
       }
       return sb.toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值