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)

相关推荐
CoderYanger9 分钟前
递归、搜索与回溯-穷举vs暴搜vs深搜vs回溯vs剪枝:13.子集
java·算法·leetcode·机器学习·剪枝·1024程序员节
疯疯癫癫才自由22 分钟前
爬取Leetcode Hot 100 题单
算法·leetcode
灰灰勇闯IT28 分钟前
Flutter×VS Code:跨端开发的高效协作指南(2025最新配置)
笔记·flutter·harmonyos
CoderYanger29 分钟前
递归、搜索与回溯-综合练习:28.不同路径Ⅲ
java·算法·leetcode·深度优先·1024程序员节
d111111111d31 分钟前
STM32-外设学习-读写备份寄存器(代码)--学习笔记
笔记·stm32·单片机·嵌入式硬件·学习
摇滚侠33 分钟前
零基础小白自学Git_Github教程,仓库的其它功能-项目管理,笔记09
笔记·git·github
丝斯201134 分钟前
AI学习笔记整理(24)—— AI核心技术(深度学习8)
人工智能·笔记·学习
我的老子姓彭37 分钟前
QT6开发笔记
笔记
自小吃多37 分钟前
5.2 FreeRTOS 二值信号量使用示例-笔记
笔记·stm32
LO嘉嘉VE1 小时前
学习笔记二十二:神经网络的几起几落
笔记·神经网络·学习