【Leetcode-171.Excel表列序号 -168.Excel表列名称】

简介: 【Leetcode-171.Excel表列序号 -168.Excel表列名称】

Leetcode-171.Excel表列序号

题目:给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号 。

例如:

A -> 1

B -> 2

C -> 3

Z -> 26

AA -> 27

AB -> 28

我们的思路是,从后往前遍历,同时定义一个变量m的初始值为1;先判断这个列的名称的最后一个字母,因为该字母的权位最小,该字母的数值为多少就是多少,如AA,可表达为1 * 26 + 1,第二个A的值就为1;在计算该字母的数值时,columnTitle[i] - ‘A’ 只是计算columnTitle[i]与’ A '相差的值,所以还要+1才是columnTitle[i] 对应的数值;当i- -,即判断前一位时,m的值要乘26,即前一位的权位就是26,就如AA,表达为1 * 26 + 1,第一位A的权位就是26,相当于26进制的处理方法;以此类推,每向前一位,m的值就要累计乘以26;再将每一位计算的结果累计加到number中,返回number即可;

int titleToNumber(char* columnTitle)
    {
        long long m = 1;
        int number = 0;
        //从后往前遍历
        for (int i = strlen(columnTitle) - 1; i >= 0; i--)
        {
            number += (columnTitle[i] - 'A' + 1) * m;
            m *= 26;
        }
        return number;
    }

Leetcode-168.Excel表列名称

题目:给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

A -> 1

B -> 2

C -> 3

Z -> 26

AA -> 27

AB -> 28

我们的思路是,从这个数字表示的列名称从后往前表示,如28表示的是AB,我们先将它减一,算出它除以26的余数是1,再加上字符’ A ',计算表示出来的是B,然后把它放到一个数组中;然后每次计算完一个结果后将这个数除以26,以此类推,最后将字符串逆置即是所求;

void reverse(char* p, int len)
    {
        int left = 0, right = len - 1;
        while (left < right)
        {
            int tmp = p[left];
            p[left++] = p[right];
            p[right--] = tmp;
        }
    }
    char* convertToTitle(int columnNumber)
    {
        char* arr = (char*)malloc(sizeof(char) * 10);
        int arrSize = 0;
        //当columnNumber大于0,先减1,再模26,加上'A',得到的就是这个数字表示的名称的最低位的列名称
        //如28表示为 AB ,28先减一得到27,27模26得1,1 +'A'就得到'B'
        //然后把得到的结果放到数组中,再将这个数字除以26,继续循环
        while (columnNumber > 0)
        {
            columnNumber -= 1;
            arr[arrSize++] = columnNumber % 26 + 'A';
            columnNumber /= 26;
        }
        //当columnNumber小于0
        arr[arrSize] = '\0';
        //因为是从后往前表示列的名称的,所以要逆置字符串;最后返回逆置后的字符串
        reverse(arr, arrSize);
        return arr;
    }
目录
相关文章
|
7月前
|
存储 算法 数据挖掘
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
|
7月前
|
算法 数据挖掘 大数据
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)
|
8月前
【力扣】168. Excel表列名称、171. Excel 表列序号
【力扣】168. Excel表列名称、171. Excel 表列序号
118 1
|
8月前
|
Java
|
4月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
65 6
|
5月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
133 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
57 1
|
4月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
5月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
79 7