☆打卡算法☆LeetCode 171. Excel 表列序号 算法解析

简介: ☆打卡算法☆LeetCode 171. Excel 表列序号 算法解析

大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。

一、题目

1、算法题目

“给定一个字符串 columnTitle,表示Excel表格中的列名称,返回该列名称对应的列序号。”

2、题目描述

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

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...
示例 1:
输入: columnTitle = "A"
输出: 1
示例 2:
输入: columnTitle = "AB"
输出: 28

二、解题

1、思路分析

这道题要求将Excle表中的列名称转换成列序号。

这道题跟168题Excle表列名称很类似,168题是将数字转化为列名称,这道题是将列名称转换为数字。

跟168解法类似,也是一个进制的转化,将大写字母转成26进制,然后再转成10进制,就是求得的数字。

2、代码实现

代码参考:

class Solution {
    public int titleToNumber(String s) {
        int ans = 0;
        for(int i=0;i<s.length();i++) {
            int num = s.charAt(i) - 'A' + 1;
            ans = ans * 26 + num;
        }
        return ans;
    }
}

1702377292866.jpg

3、时间复杂度

时间复杂度:O(n)

其中n是列名称colummTitle的长度,需要遍历列名称一次。

空间复杂度:O(1)

只需要常量级的空间。

三、总结

遍历字符串,将字符串中的每个字母与A做减法,因为A表示1,减法后每个数加1,也就是:

num = 字母 - A + 1

因为是26进制,所以没26位进1,也就是:

ans = ans * 26 + num

比如ZY,Z的值是26,Y的值是25,则结果是:

26 * 26 + 25 = 701

相关文章
|
6天前
|
机器学习/深度学习 搜索推荐 算法
推荐系统的算法与实现:深入解析与实践
【6月更文挑战第14天】本文深入探讨了推荐系统的原理与实现,包括用户和项目建模、协同过滤、内容过滤及混合推荐算法。通过收集用户行为数据,系统预测用户兴趣,提供个性化推荐。实践中,涉及数据处理、建模、算法选择及结果优化。随着技术发展,推荐系统将持续改进,提升性能和用户体验。
|
2天前
|
机器学习/深度学习 算法 TensorFlow
Inception v3算法的实战与解析
Inception v3算法的实战与解析
|
6天前
|
Go
golang解析excel、csv编码格式
golang解析excel、csv编码格式
9 4
|
10天前
|
算法 数据挖掘 大数据
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)
深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)
|
10天前
|
存储 算法 数据挖掘
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
深入解析力扣168题:Excel表列名称(进制转换法详解及模拟面试问答)
|
11天前
|
存储 自然语言处理 算法
编辑距离算法全解析:优化文本处理的关键技术
编辑距离算法全解析:优化文本处理的关键技术
|
11天前
|
存储 算法 数据挖掘
螺旋矩阵 II:从理论到实践的五种算法解析
螺旋矩阵 II:从理论到实践的五种算法解析
|
6天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7天前
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积

热门文章

最新文章

推荐镜像

更多