Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
168. Excel表列名称 - 力扣(LeetCode) (leetcode-cn.com)
给你一个整数 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 <= 2^31 - 1
二、思路分析:
类似于26进制,对比于10十进制转2进制的算法,这列需要改一下 在判断余数的时候,如果为0,可以将余数置为26,然后columnNumber减1,为了避免增大n带来的判断异常
三、AC 代码:
class Solution {
public String convertToTitle(int columnNumber) {
StringBuffer s = new StringBuffer();
while(columnNumber > 0){
int n = columnNumber % 26;
if(n == 0){
n = 26;
columnNumber --;
}
s.append((char)('A' + n - 1));
columnNumber /= 26;
}
return new String(s.reverse());
}
}
四、总结:
这题本是不难,就是有个细节需要注意下,就是本题我们需要从1开始,而不是0。
范文参考:
【宫水三叶】从 1 开始的 26 进制转换题 - Excel表列名称 - 力扣(LeetCode) (leetcode-cn.com)
[python3] 通过减法将其变成正常的26进制 - Excel表列名称 - 力扣(LeetCode) (leetcode-cn.com)
个人认为应该是最好理解的题解了 - Excel表列名称 - 力扣(LeetCode) (leetcode-cn.com)