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进制
-
需要注意的是该26进制和普通进制不同的是:第一位是1,最后一位是26(而十进制是第一位是0,最后一位是9)
-
因此只需要把columnNumber每次-1再取余就可以转为从0开始,然后整除26继续循环取余,余数放入char缓冲区
-
还需注意一个点,得到的余数如果是0代表A,A的ASCII码是65,因此余数+65转为char放入缓冲区
-
最后反转缓冲区输出成String即可
三、AC 代码:
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder sb = new StringBuilder();
while (columnNumber>0){
columnNumber--;
sb.append((char)(columnNumber%26 + 65));
columnNumber/=26;
}
sb.reverse();
return sb.toString();
}
}
复制代码
四、总结:
貌似没啥好写的的,转26进制,注意的是[1,26],而不是[0,25]就好了。
范文参考:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END