Question

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 
    ...

Example 1:

Input: 1
Output: "A"

Example 2:

Input: 28
Output: "AB"

Example 3:

Input: 701
Output: "ZY"

Thinking:

class Solution {
    public String convertToTitle(int n) {
        if(n == 0) return "";
        StringBuilder sb = new StringBuilder();
        String map = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        while(n != 0){
            sb.append(map.charAt((n - 1) % 26));
            n --;
            n /= 26;
        }
        return sb.reverse().toString();
    }
}

二刷

  1. 唯一恶心的就是都是从1开始计数,所以每次计算之前需要-1.
    class Solution {
     public String convertToTitle(int n) {
         StringBuilder sb = new StringBuilder();
         while(n != 0){
             n--;
             int remain = n % 26;
             sb.insert(0, (char)(remain + 'A'));
             n /= 26;
         }
         return sb.toString();
     }
    }