ITPub博客

首页 > 数据库 > 数据库开发技术 > 算法题解:Excel 工作表列标题

算法题解:Excel 工作表列标题

原创 数据库开发技术 作者:Coding as Hobby 时间:2022-08-26 09:03:00 0 删除 编辑

昨晚,一个小伙伴甩给我一道算法题,由于当时正躺在床上跟老婆一起看《权力的游戏 第七季》,就没去想,今早起床后打开电脑第二件事就是去做一下那道题。

题目

这道题是如此描述的——

完成一个转换函数,将数字转成对应的大写字母,满足下面的对应关系:

题解

从描述中初步分析可以知道,需要做的事情大体为两步:将给定数字按照一定规则转换为大写字母;拼接转换后的大写字母为一个完整的字符串。

从「1」开始最初的连续 26 个整数与大写字母之间的对应关系很明确,让人觉得这是一道普通的十进制转二十六进制或二十七进制的进制转换题。然而,进一步观察就会发现,这里缺少了对于「0」的相关描述,所以在进位时肯定要做点特殊处理。

将数字转为大写字母,最直觉的方式,就是使用字符串数组:

在 JS 中通过 String.prototype.charCodeAt() 方法能够获取到字符所对应的 Unicode 的编码单元,并且 26 个大写字母是连续的,所以可以改造为:

在做进制转换时,需要在源和目标之间不断地进行求商和余数。结合上面的转换代码,用循环实现为:

其中,Math.floor(dividedNum / 26) 可以用 ~~(dividedNum / 26) 替代,用递归实现为:

另外,LeetCode 上有同款算法题:https://leetcode-cn.com/problems/excel-sheet-column-title/。

原文作者:Coding as Hobby;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-31

  • 博文量
    56
  • 访问量
    25029