力扣168Excel表列名称

haimian
2025-03-25 / 0 评论 / 1 阅读 / 正在检测是否收录...

这个题目我刚开始都做蒙了
简单来说就是Ascii+数组即可
我直接先上题目把
给你一个整数 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

直接上代码

char* convertToTitle(int columnNumber) {
    if (columnNumber < 0) {
        static char empty_str[1] = "";
        return empty_str;
    }
    static char str[8];
    int index = 0;

    while (columnNumber > 0) {
        columnNumber--;
        int remainder = columnNumber % 26;
        str[index++] = 'A' + remainder;
        columnNumber /= 26;
    }
    str[index] = '\0';

    // 反转字符串
    int left = 0, right = index - 1;
    while (left < right) {
        char temp = str[left];
        str[left] = str[right];
        str[right] = temp;
        left++;
        right--;
    }

    return str;
}
    

因为我也是问的AI 所以说 我直接详细的解释一下把
首先就是我们做一个判断,如果这个数字小于0 那么直接返回空
接下来大于0的情况 我们可以很清楚的看到 我们先看看这个数字有多少个26 因为取模和除法基本都是从0开始的,比如我们举例用29来计算的话,那么我们先29 - 1 = 28 28 / 26 = 2 那么我们A + 2 是C 接下来28 % 26 是1 那么接下来应该是A 1 - 1 = 0,A + 0 = A,CA 但是结果应该是AC 所以说 我们需要进行反转字符串所以说按照双指针的用法来说就是上面的代码 因此就是上面代码的完整解释了。

可恶打字到一半的时候 莫名其妙没了,不知道为什么 难受
最后贴上图片
m8ogij2x.png

0

评论 (0)

取消