码迷,mamicode.com
首页 > 其他好文 > 详细

168. Excel Sheet Column Title

时间:2016-09-13 07:56:43      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/Machelsky/p/5867083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!