龙空技术网

LeetCode基础算法题第83篇:Excel表列名称到列序号的转换

吾是我师 298

前言:

现在姐妹们对“java行转列算法”可能比较关注,朋友们都需要了解一些“java行转列算法”的相关内容。那么小编在网摘上收集了一些关于“java行转列算法””的相关知识,希望咱们能喜欢,小伙伴们一起来了解一下吧!

一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。

我计划每题给出两种语言的解决方案,一种静态语言,一种动态语言。

我选择C语言,Python和Java作为实现语言,由于篇幅有限,其他语言的实现有兴趣的朋友请自己尝试。

LeetCode 171. Excel表列序号(Excel Sheet Column Number)

问题描述:

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

示例:C语言实现:

这是一个类似于26进制转10进制问题。A~Z表示连续的26个数字,只是起始是从1开始到26结束。所以我这里说的是"类似",真正的26进制应该是从0~25的。但这不并影响我们解题。

例如对于"AB"来说,从右到左,B对应数字2,A对应数字1,即"AB"转换成10进制就是1*26+2=28。

代码如下:

python语言的实现:

python 和C语言实现原理相同。

首先建立一个字典定义字母到数字的映射,方便查找。

然后将字符串转换成字符列表,然后翻转,使得低位数在左,高位数在右,这样只是为了方便计算,再将其转换成一个enumerate对象,这样对于每一个元素x,x[0]即下标,表示和26幂运算的指数;x[1]表示字母对应的数值。

对enumerate对象中的每一个元素执行lambda表达式,计算该字母对应的数值。最后累加即可。

代码如下:

Java语言的实现:

Java的实现和C语言的实现相同。

代码如下:

标签: #java行转列算法 #python26进制转10进制 #python 10进制转26进制