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 

思路一:

本质是进制转换,是将n转化为26进制,但是需要注意的是这个26进制是从1开始的。

 1 public String convertToTitle(int n) {
 2         StringBuilder sb  =  new StringBuilder();
 3         while(n > 0) {
 4             int remainder = n % 26;
 5             n /= 26;
 6             if(remainder == 0) {
 7                 //当余数是0时,插入Z后n要减1
 8                 sb.insert(0, 'Z');
 9                 n--;
10             } else {
11                 sb.insert(0, (char)('A' + remainder - 1));
12             }
13         }
14         return sb.toString();
15     }

思路二:

一种简洁的递归实现,每次递归n先减1,可以理解为把1~26变为了0~25。

1 public String convertToTitleII(int n) {
2         n--;
3         if(n<26) {
4             return String.valueOf((char)(n + 'A'));
5         }
6         return convertToTitle(n / 26) + String.valueOf((char)(n % 26 + 'A'));
7     }

 

posted on 2015-04-02 09:23  绿树荫  阅读(155)  评论(0编辑  收藏  举报

导航