美文网首页
[刷题防痴呆] 0168 - Excel表列名称 (Excel

[刷题防痴呆] 0168 - Excel表列名称 (Excel

作者: 西出玉门东望长安 | 来源:发表于2021-11-10 05:06 被阅读0次

题目地址

https://leetcode.com/problems/excel-sheet-column-title/description/

题目描述

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 
    ...
Example 1:

Input: 1
Output: "A"
Example 2:

Input: 28
Output: "AB"
Example 3:

Input: 701
Output: "ZY"

思路

  • 本质是10进制到26进制的转换.
  • 这是一道从1开始的的26进制转换题。
  • 对于一般性的进制转换题目,只需要不断地对 columnNumbercolumnNumber 进行 % 运算取得最后一位,然后对 columnNumbercolumnNumber 进行 / 运算,将已经取得的位数去掉,直到 columnNumbercolumnNumber 为 0 即可。
  • 一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 [0,x)[0,x)」的前提下进行「逢 xx 进一」。
  • 但本题需要我们将从 1 开始,因此在执行「进制转换」操作前,我们需要先对 columnNumbercolumnNumber 执行减一操作,从而实现整体偏移。

关键点

  • 进制转换就是不断取余.
  • 注意, 此题是倒序. 最后将余数倒序输出.
  • 由于这题从1开始, 所以除的时候, n--.

代码

  • 语言支持:Java
class Solution {
    public String convertToTitle(int columnNumber) {
        StringBuffer sb = new StringBuffer();
        while (columnNumber != 0) {
            columnNumber--;
            char c = (char)(columnNumber % 26 + 'A');
            sb.append(c);
            columnNumber /= 26;
        }

        return sb.reverse().toString();
    }
}

相关文章

网友评论

      本文标题:[刷题防痴呆] 0168 - Excel表列名称 (Excel

      本文链接:https://www.haomeiwen.com/subject/rcruzltx.html