首页 > 代码库 > LeetCode(168) Excel Sheet Column Title

LeetCode(168) Excel Sheet Column Title

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 分析:

本质上相当于把十进制转化为26进制,但是又有一些小区别,如 十进制10有两位,二进制2有两位‘10‘,而26进制26为‘Z‘,只有一位。十进制、二进制都从0开始,而这个是从1开始。

做了半天做不出来,总是有问题,可能数学功底不行吧- -。然后参考了http://blog.csdn.net/u012162613/article/details/42059591,发现是能够整除时,没处理好,整除时,该位直接设为‘Z‘,然后自减一就能满足要求了。

3 代码

    public String convertToTitle(int n){            final String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";        final int LETTER_NUMBER = 26;                    StringBuffer sb = new StringBuffer();        while(n != 0){            if( n % LETTER_NUMBER == 0){                // 26的整数倍,直接取‘Z‘,若不减一,则上一位会多一,如26变为AZ,52变为BZ,减一后恰到好处。                sb.append(letters.charAt(LETTER_NUMBER - 1));                n--;            }else {                sb.append(letters.charAt(n % LETTER_NUMBER - 1));            }            n = n / LETTER_NUMBER;        }            return sb.reverse().toString();    }

 

LeetCode(168) Excel Sheet Column Title