LeetCode - 168 - Excel表列名称(excel-sheet-column-title)

栏目: IT技术 · 发布时间: 5年前

内容简介:LeetCode - 168 - Excel表列名称(excel-sheet-column-title)

Create by jsliang on 2019-07-04 19:30:13
Recently revised in 2019-7-5 09:10:53

一 目录

不折腾的前端,和咸鱼有什么区别

| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 四 执行测试 | | 五 LeetCode Submit | | 六 知识点 | | 七 解题思路 |

二 前言

  • 难度:简单

  • 涉及知识:数学

  • 题目地址:https://leetcode-cn.com/problems/excel-sheet-column-title/

  • 题目内容

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

  2. 例如,

  3. 1 -> A

  4. 2 -> B

  5. 3 -> C

  6. ...

  7. 26 -> Z

  8. 27 -> AA

  9. 28 -> AB

  10. ...

  11. 示例 1:

  12. 输入: 1

  13. 输出: "A"

  14. 示例 2:

  15. 输入: 28

  16. 输出: "AB"

  17. 示例 3:

  18. 输入: 701

  19. 输出: "ZY"

三 解题

小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。

  • 解题代码

  1. var convertToTitle = function(n) {

  2. let res = '';

  3. while (n !== 0) {

  4. n--;

  5. res = String.fromCharCode(n % 26 + 65) + res;

  6. n = parseInt(n / 26);

  7. }

  8. return res;

  9. };

四 执行测试

  1. 703

  2. return: AAA

五 LeetCode Submit

  1. Accepted

  2. 18/18 cases passed (68 ms)

  3. Your runtime beats 92.89 % of javascript submissions

  4. Your memory usage beats 23.3 % of javascript submissions (33.7 MB)

六 知识点

fromCharCode():静态 String.fromCharCode() 方法返回由指定的 UTF-16 代码单元序列创建的字符串。简单来说,就是接受一个 Unicode 值,然后返回一个字符串。例如 65 - A,66 - B。 fromCharCode() 详细介绍

七 解题思路

首先,小伙伴们一上手,可能会发现这就是一道找规律题。

那么,规律在哪呢?

  • [1-26]: [A-Z]

  • [27-52]: [AA-AZ]

  • ……

就是说,假设我们求解 27,那么它结果是 AA

然后,我们开始计算

  1. 将 27 以满 26 进制的形式,就是说转了一圈又到新开始。 27=26+1

  2. 将 (27-1)%26,得到的就是起始点 0,这里我们使用了 ASCII, A 在里面的对照就是 65、 B 在里面的对照是 66……

  3. 最后, 27 转了一圈,应该换掉: (27-1)/26,得到的就是它处在新一轮的第 1 个位置。

  4. ……

最终,得知这个数为 A + A,即 AA

  1. var convertToTitle = function(n) {

  2. let res = '';

  3. while (n !== 0) {

  4. n--;

  5. res = String.fromCharCode(n % 26 + 65) + res;

  6. n = parseInt(n / 26);

  7. }

  8. return res;

  9. };

八 进一步探索

由于 jsliang 想到的是 ASCII,然后看了下 LeetCode 的评论和题解,里面有自定义字典的,小伙伴们可以瞅瞅:

参考 1

  1. var convertToTitle = function(n) {

  2. let dict = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',

  3. 'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']

  4. let res = ''

  5. while (n !== 0) {

  6. n--

  7. let c = n % 26

  8. res = dict[c] + res

  9. n = parseInt(n / 26)

  10. }

  11. return res

  12. };

参考 2

  1. var convertToTitle = function (n) {

  2. const dic = 'ZABCDEFGHIJKLMNOPQRSTUVWXYZ';

  3. let res = '';

  4. while (n / 26 > 1) {//如果还有进位

  5. let mod = n % 26;// 取得当前余数

  6. res = dic[mod] + res;// 将余数放入结果

  7. n = (n - (mod === 0 ? 26 : mod)) / 26;// 减去余数部分

  8. }

  9. res = dic[n] + res

  10. return res;

  11. };


不折腾的前端,和咸鱼有什么区别!

LeetCode - 168 - Excel表列名称(excel-sheet-column-title)

jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。

扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!

LeetCode - 168 - Excel表列名称(excel-sheet-column-title)
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。


以上所述就是小编给大家介绍的《LeetCode - 168 - Excel表列名称(excel-sheet-column-title)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

重来

重来

[美] 贾森·弗里德、[丹] 戴维·海涅迈尔·汉森 / 李瑜偲 / 中信出版社 / 2010-10 / 36.00元

大多数的企业管理的书籍都会告诉你:制定商业计划、分析竞争形势、寻找投资人等等。如果你要找的是那样的书,那么把这本书放回书架吧。 这本书呈现的是一种更好、更简单的经商成功之道。读完这本书,你就会明白为什么计划实际上百害而无一益,为什么你不需要外界投资人,为什么将竞争视而不见反倒会发展得更好。事实是你所需要的比你想象的少得多。你不必成为工作狂,你不必大量招兵买马,你不必把时间浪费在案头工作和会议......一起来看看 《重来》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具