春招刷题 – 168. Excel表列名称

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

二、思路分析:

  1. 首先这可以理解为一道进制转换题,由十进制转为26进制

  2. 需要注意的是该26进制和普通进制不同的是:第一位是1,最后一位是26(而十进制是第一位是0,最后一位是9)

  3. 因此只需要把columnNumber每次-1再取余就可以转为从0开始,然后整除26继续循环取余,余数放入char缓冲区

  4. 还需注意一个点,得到的余数如果是0代表A,A的ASCII码是65,因此余数+65转为char放入缓冲区

  5. 最后反转缓冲区输出成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]就好了。

范文参考

Excel表列名称 – Excel表列名称 – 力扣(LeetCode) (leetcode-cn.com)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享