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)

相关推荐
Xudde.5 小时前
班级作业笔记报告0x04
笔记·学习·安全·web安全·php
XWalnut6 小时前
LeetCode刷题 day4
算法·leetcode·职场和发展
codeJinger7 小时前
【Python】操作Excel文件
python·excel
旖-旎7 小时前
分治(库存管理|||)(4)
c++·算法·leetcode·排序算法·快速选择算法
zzh0818 小时前
MySQL高可用集群笔记
数据库·笔记·mysql
绛橘色的日落(。・∀・)ノ8 小时前
Matplotlib实践学习笔记
笔记·学习
chase。8 小时前
【学习笔记】AGILE:把人形机器人强化学习从“玄学”变成“工程学”
笔记·学习·敏捷流程
久菜盒子工作室8 小时前
高等教育学|第一章高等教育概述
经验分享·笔记·课程设计
tq10869 小时前
语言流形与思维共生:中西认知图景的差异与交融
笔记
YuanDaima20489 小时前
基于 LangChain 1.0 的检索增强生成(RAG)实战
人工智能·笔记·python·langchain·个人开发·langgraph