Leetcode 168. Excel Sheet Column Title

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 

分析

找出excel列标题变化的规律。类似于26进制,但有些不同。需要ABCD=A×26³+B×26²+C×26¹+D=1×26³+2×26²+3×26¹+4来对每一位进行处理。

char* convertToTitle(int n) {
    char*ans=(char*)malloc(sizeof(char)*1000);
    int length=0;
    int num=n;
    while(num>0)
    {
        if(num%26==0)
        {
            ans[length]='Z';
            length++;
        }
        else
        {
            ans[length]=num%26+'A'-1;
            length++;
        }
        num=n;
        int mi=1;
        for(int i=0;i<length;i++)
        {
            num=num-(ans[i]-'A'+1)*mi;
            mi=mi*26;
        }
        for(int i=0;i<length;i++)
        {
            num=num/26;
        }
        
        //printf("%d %c\n",num,ans[length-1]);
    }
    ans[length]='\0';
    for(int i=0;i<length/2;i++)
    {
        char temp=ans[i];
        ans[i]=ans[length-i-1];
        ans[length-i-1]=temp;
    }
    length++;
    return ans;
}

还有一种方法将 1-> A, 26 -> Z, 转化为0 -> A, 25 -> Z,这样就能使用之前进制转化的方法来计算。

string convertToTitle(int n) {
        string ans;
        while (n) {
            ans = char ((n - 1) % 26 + 'A') + ans;
            n = (n - 1) / 26;
        }
        return ans;
    }

推荐阅读更多精彩内容