友情支持

如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜

支付宝

微信

有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

wx jikerizhi

公众号的微信号是: jikerizhi因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。

168. Excel表列名称

给你一个整数 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

思路分析

这个计算不是从 0 开始,和常规的计数不一样,需要特殊考虑。

看题解,也可以直接当做进制转换来处理!只需要特别处理一下没有 0 导致的偏移即可。

  • 一刷

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
/**
 * @author D瓜哥 · https://www.diguage.com
 * @since 2025-06-27 21:01:09
 */
public String convertToTitle(int columnNumber) {
  StringBuilder sb = new StringBuilder();
  while (columnNumber > 0) {
    int mul = columnNumber / 26;
    int diff = columnNumber - mul * 26;
    if (diff == 0) {
      diff = 26;
    }
    sb.append((char) ('A' + diff - 1));
    columnNumber = (columnNumber - diff) / 26;
  }
  return sb.reverse().toString();
}