首页 > 代码库 > 168. Excel Sheet Column Title

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 

Solution1:

看起来是一道非常简单的题,但浪费了我好多时间。昨天下午一直到今天中午把第一个project做完,有点被掏空了= =。
思路:用余数的方法算字母,但是有几个corner case需要额外注意。52%=0,实际输出的是AZ,我的做法是检查余数,如果为零,减一,
然后再算整数位,如果余数不为零,就直接输出正确的余数和整数。小于等于26的数就直接输出字母。做的稀里糊涂的,困死了。

public class Solution {    public String convertToTitle(int n) {          StringBuilder sb=new StringBuilder();    while(n>0)    {        if(n<=26)        {            sb.insert(0,(char)(‘A‘+n-1));            return sb.toString();        }       int check= n%26;       if(check==0)       {          sb.insert(0,‘Z‘);          n--;          n/=26;       }       else       {       sb.insert(0,(char)(‘A‘+check-1));       n/=26;       }    }    return null;}}

Solution2: 

把数字减一再运算就不用考虑其他问题了。参考了discussion

public class Solution {    public String convertToTitle(int n) {        if (n < 1) {            return "";        }        StringBuilder sb = new StringBuilder();        while (n > 0) {            n--;            sb.insert(0, (char)(n % 26 + ‘A‘));            n /= 26;        }        return sb.toString();    }}

 

168. Excel Sheet Column Title