您的位置:首页 > 其它

【leetcode 进制转换】Excel Sheet Column Title

2014-12-21 12:30 225 查看

【leetcode 进制转换】Excel Sheet Column Title

@author:wepon

@blog:http://blog.csdn.net/u012162613

1、题目

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


2、分析

excel中的序是这样排的:A~Z,AA~ZZ,AAA~ZZZ.......
本质是进制转换,将n转化为26进制,转化过程如下(括号里的是26进制数):
1->(1)->A
2->(2)->B
...
26->(10)->Z
27->(11)->AA
28->(12)->AB
.....
52->(20)->AZ
53->(21)->BA

因此可以将n转化为26进制表示的数,然后对每一位的数,根据『1->A,2->B,3->C....25->Y,26->Z』来转化。
当然,按照进制转换的方法(不断地除26取余数),不可能有26的余数,比如:52->(20)->AZ,此时余数是0,这种情况要特殊处理,很简单,如下面的代码所示:

3、代码

string convertToTitle(int n) {
        string str;
        while(n){
            int r=n%26;
            n=n/26;
            if(r==0){   //为26的整数倍,该位设置为Z,n减掉1
                str+='Z';
                n--;
            }else{
                str+=('A'+r-1);
            }
        }
        //反转
        string result;
        for(int i=str.size()-1;i>=0;i--){
            result+=str[i];
        }
        return result;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: