加载中...
168-Excel表列名称(Excel Sheet Column Title)
发表于:2021-12-03 | 分类: 简单
字数统计: 180 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/excel-sheet-column-title

英文原文

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"

Example 4:

Input: columnNumber = 2147483647
Output: "FXSHRXW"

 

Constraints:

  • 1 <= columnNumber <= 231 - 1

中文题目

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

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

 

示例 1:

输入:columnNumber = 1
输出:"A"

示例 2:

输入:columnNumber = 28
输出:"AB"

示例 3:

输入:columnNumber = 701
输出:"ZY"

示例 4:

输入:columnNumber = 2147483647
输出:"FXSHRXW"

 

提示:

  • 1 <= columnNumber <= 231 - 1

通过代码

高赞题解

模拟

这是一道从 $1$ 开始的的 $26$ 进制转换题。

对于一般性的进制转换题目,只需要不断地对 $columnNumber$ 进行 % 运算取得最后一位,然后对 $columnNumber$ 进行 / 运算,将已经取得的位数去掉,直到 $columnNumber$ 为 $0$ 即可。

一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 $[0,x)$」的前提下进行「逢 $x$ 进一」。

但本题需要我们将从 $1$ 开始,因此在执行「进制转换」操作前,我们需要先对 $columnNumber$ 执行减一操作,从而实现整体偏移。

代码:

[]
class Solution { public String convertToTitle(int cn) { StringBuilder sb = new StringBuilder(); while (cn > 0) { cn--; sb.append((char)(cn % 26 + 'A')); cn /= 26; } sb.reverse(); return sb.toString(); } }
  • 时间复杂度:$O(\log_{26}{cn})$
  • 空间复杂度:不算构造答案所消耗的空间,复杂度为 $O(1)$

统计信息

通过次数 提交次数 AC比率
89042 205406 43.3%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
Excel 表列序号 简单
上一篇:
167-两数之和 II - 输入有序数组(Two Sum II - Input Array Is Sorted)
下一篇:
169-多数元素(Majority Element)
本文目录
本文目录