leetcode做题笔记168. Excel表列名称

给你一个整数 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

思路一:转换为字符串后翻转顺序

c语言解法

cpp 复制代码
void reverse(char* str, int strSize) {
    int left = 0, right = strSize - 1;
    while (left < right) {
        char tmp = str[left];
        str[left] = str[right], str[right] = tmp;
        left++;
        right--;
    }
}

char* convertToTitle(int columnNumber) {
    char* ans = malloc(sizeof(char) * 8);
    int ansSize = 0;
    while (columnNumber > 0) {
        int a0 = (columnNumber - 1) % 26 + 1;
        ans[ansSize++] = a0 - 1 + 'A';
        columnNumber = (columnNumber - a0) / 26;
    }
    ans[ansSize] = '\0';
    reverse(ans, ansSize);
    return ans;
}

分析:

本题给出一个整数返回excel表中相对应的名称,注意到整数每对26取模一次则返回名称长度加一,且此新字符和取模的数有关,将这些字符记录下来,编写一个翻转函数来改变顺序,最后返回处理好的字符串即可

总结:

本题考察对字符串的应用,利用取模运算转换字符后翻转输出即可解决,时间复杂度O(n),空间复杂度O(n)

相关推荐
Aliex_git17 小时前
性能指标笔记
前端·笔记·性能优化
@zulnger17 小时前
python 学习笔记(异常对象)
笔记·python·学习
其美杰布-富贵-李17 小时前
x-transformers 完整学习笔记
笔记·学习·transformer
2501_9071368217 小时前
Word题库转换Excel
word·excel·软件需求
sunfove17 小时前
光学学习笔记:详解光通量、照度、强度与亮度
笔记·学习
clorisqqq17 小时前
人工智能现代方法 第二章2.1-2.3节 笔记
人工智能·笔记
有一个好名字17 小时前
力扣-最大连续1的个数III
c++·算法·leetcode
橘颂TA17 小时前
【剑斩OFFER】算法的暴力美学——力扣 43 题:字符串相乘
数据结构·算法·leetcode·职场和发展·哈希算法·结构与算法
less is more_093017 小时前
文献学习——极端高温灾害下电缆型配电网韧性提升策略研究
笔记·学习·算法
菩提小狗17 小时前
vulnhub靶场实战系列-1.靶场实战平台介绍|课程笔记|网络安全|
笔记·安全·web安全