题目链接

LeetCode

题目描述

给你一个整数 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的26进制转换
    当前位为:(char) ((columnNumber % 26 + (‘A’ - 1))
    因为 columnNumber % 26 可能为 0,(‘A’ - 1)不在运算中,应转换为 ‘A’ + 25 既 ‘Z’,
    修改为: (columnNumber % 26 + 25) % 26 + ‘A’
    剩下数据为:columnNumber = (columnNumber - 1) / 26;
    当columnNumber是26的倍数时,后一位用Z表示26,前一位减一,避免重复
  1. class Solution {
  2. public String convertToTitle(int columnNumber) {
  3. String res = "";
  4. while(columnNumber > 0){
  5. res = (char)((columnNumber % 26 + 25) % 26 + 'A') + res;
  6. // 减一来解决取模问题 当columnNumber是26的倍数时,后一位可以用Z表示26,前一位减一
  7. columnNumber = (columnNumber - 1) / 26;
  8. }
  9. return res;
  10. }
  11. }