博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
168、171 Excel表的列名称与列序号对应
阅读量:3592 次
发布时间:2019-05-20

本文共 1266 字,大约阅读时间需要 4 分钟。

168  给定一个正整数,返回它在 Excel 表中相对应的列名称                                                      

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

 

一、168 给定一个正整数,返回它在 Excel 表中相对应的列名称

 

【题目】

 

【方法一】

26进制。但是有点不一样。

拿到任意一个数,n/26看一下商和余数。

1/26 = 商0余1                 A

2/26 = 商0余2                 B

3/26 = 商0余3                 C 

...                                    ...

25/26 = 商0余25             Y

26/26 = 商0余26             Z

 

27/26 = 商1余1              AA

28/26 = 商1余2              AB

....                                   ...

51/26 = 商1余25            AY

52/26 = 商1余26            AZ

...

...

701/26 = 商26余25        ZY

702/26 = 商26余26        ZZ

 

 

我们发现:

当余数为1~25时,对应显示A~Y。

当余数为26时,显示Z。但是计算的时候如果有余数为26就会进上去。比如52/26=2余0,而不是等于1余26。

那怎么办?再要回来!当余数显示为0的时候,就让商减去1。这样我就是26了。

 

 

代码:

 

结果:

 

 

【方法二】

方法一中,我们可以看到:

1. 当余数不为0时,需要增加的字符是x-1+'A'。等同于先让n减1,然后再用余数+'A'。

    即:当n%26 != 0时: (n%26)-1+'A' == (n--)%26 + 'A'。

 

2. 当余数等于0时,需要增加的字符是'Z',并且让n/26减了1。等同于先让n减1,然后余数+'A'。

   即:当n%26==0时: 'Z' = (n--)%26 + 'A'

因此,可以上来先让n减1,然后除以26。余数0~25对应A~Z。商再用同样的方式转化。

 

举例来说:

1---->0      0/26 = 商0余0             A

2---->1      1/26 = 商0余1             B

3---->2      2/26 = 商0余2             C

4---->3      3/26 = 商0余3             D 

...                                    ...

25---->24  24/26 = 商0余24         Y   

26---->25  25/26 = 商0余25         Z

 

27---->26  26/26 = 商1余0          AA

28---->27  27/26 = 商1余1          AB

....                                   ...

52---->51  51/26 = 商1余25        AZ

53---->52  52/26 = 商2余0          BA

...

...

702---->701  701/26 = 商26余25        ZZ

 

 

 

代码:

 

结果:

 

 

--------------------------------------------------------------------------------------------------------------------

 

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

 

【题目】

 

【分析】

ZY= Z*26+Y = 26*26+25 

ABY = 1*26*26 + 2*26 + 25

就是26进制转成10进制。

 

【代码】

 

【结果】

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://fslwn.baihongyu.com/

你可能感兴趣的文章
【c语言】蓝桥杯算法提高 勾股数
查看>>
【c语言】蓝桥杯算法提高 c++_ch02_04
查看>>
【c语言】蓝桥杯算法提高 3-1课后习题2
查看>>
【c语言】蓝桥杯算法提高 3-2求存款
查看>>
【c语言】蓝桥杯算法提高 3-3求圆面积表面积体积
查看>>
【c语言】蓝桥杯算法提高 P0401
查看>>
【c语言】蓝桥杯算法提高 P0402
查看>>
【c语言】蓝桥杯算法提高 三个整数的排序
查看>>
【c语言】蓝桥杯算法提高 P0101
查看>>
【c语言】统计字符次数
查看>>
CTDB原理介绍
查看>>
CTDB配置文件参数解析
查看>>
利用NFS共享搭建CTDB集群
查看>>
Python面向对象编程
查看>>
MAN QPIDD
查看>>
python import自定义模块
查看>>
Python利用XMLRPC实现分布式系统
查看>>
执行yum提示错误:rpmdb: BDB0113 Thread/process 424227/139826856310848 failed
查看>>
proftpd服务器搭建
查看>>
ProFTPD:Limit配置
查看>>