题目链接
题目描述
给你一个整数 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,前一位减一,避免重复
class Solution {
public String convertToTitle(int columnNumber) {
String res = "";
while(columnNumber > 0){
res = (char)((columnNumber % 26 + 25) % 26 + 'A') + res;
// 减一来解决取模问题 当columnNumber是26的倍数时,后一位可以用Z表示26,前一位减一
columnNumber = (columnNumber - 1) / 26;
}
return res;
}
}