IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    168. Excel Sheet Column Title

    10k发表于 2024-02-06 00:00:00
    love 0

    Question

    Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.

    For example:

    A -> 1
    B -> 2
    C -> 3
    ...
    Z -> 26
    AA -> 27
    AB -> 28 
    ...
    

    Example 1:

    Input: columnNumber = 1
    Output: "A"
    

    Example 2:

    Input: columnNumber = 28
    Output: "AB"
    

    Example 3:

    Input: columnNumber = 701
    Output: "ZY"
    

    Constraints:

    • 1 <= columnNumber <= 231 - 1

    Approach

    1. Figure out how the column title and numbers are converted, it's can be regarded as a 26-based conversion;
    2. Then you will find that for each title appended it's the abcd...x;
    3. You don't have to create a map or array to store all the number to column title, you use (char)('A' + mod);
    4. Then the things becomes we do divide, minus until the number is 0.
      1. The tricky part is the Z and final end with Z(no mod) so the column number is 1 after division;
      2. I tried in this direction with base 27, good point but can not be implemented , we cannot change the base of the whole thing, but we can slightly change the number we used to calculate each time(columnNumber--)

    Code

    class Solution {
        public String convertToTitle(int columnNumber) {
            
            // num = 26^n * a + 26^n-1 * b... 26^0 * x;
            StringBuilder sb = new StringBuilder();
            while (columnNumber > 0) {
                columnNumber--;
                int mod = columnNumber % 26;
                sb.insert(0, (char)('A' + mod));
                columnNumber = columnNumber / 26;
            }
            
            return sb.toString();
        }
    }
    


沪ICP备19023445号-2号
友情链接