前言:
现在姐妹们对“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语言的实现相同。
代码如下: