LeetCode - 168. Excel表列名称

news2024/11/9 9:44:57

168. Excel表列名称

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...


二进制与十进制之间的转换

在做这题之前,先复习一下二进制与十进制之间是怎么转换的

(一)二进制转十进制

如二进制下的100,转为十进制,为:0*2^0 + 0*2^1 + 1*2^2 = 4

二进制下的101,转为十进制,为:1*2^0 + 0*2^1 + 1*2^2 = 5

思路就是:

  • 2的幂次方的数字,怎么获取:这个数字是每次+1的
  • 2的幂次方乘的那个数字,怎么获取:这个数字其实就是原始二进制数的最后一位,可以用x%2表示;同时要注意 x 通过每次 //10,将最后一位的那个数从右往左依次移动
class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        x = 10101
        y = 0
        t = 0
        '''
        x = 10101    t=0
        1*2^0

        x = 1010    t=1
        0*2^1

        x = 101    t=2
        1*2^2

        x = 10    t=3
        0*2^3

        x = 1    t=4
        1*2^4

        x = 0

        '''
        while x:
            y += (2**t)*(x%2)
            x //= 10
            t += 1
        print(y)

(二)十进制转二进制

怎么转的,以十进制100转换为二进制为例,看下面这个图就明白了: 

代码实现如下:

class Solution:
    def convertToTitle(self, columnNumber: int) -> str:
        x = 100
        y = ''
        while x:
            t = x%2
            # ord()  char -> num
            # chr()  num -> char
            y = chr(ord('0')+t) + y
            x //= 2
        print(y)


168题Python代码 

(一)思路一 

最后再来分析一下本题:它给出的数是【每一位都是从1开始的二十六进制数】

思路:在转换过程中将每一位都减1,这样就得到了正常的、从0开始的二十六进制数,然后再把它表示成字母表示的二十六进制数即可

(代码跟上面的十进制转二进制几乎差不多,理解了这个,本题就好懂了)

class Solution:
    def convertToTitle(self, x: int) -> str:
        y = ''
        while x:
            x -= 1
            t = x%26
            # ord()  char -> num
            # chr()  num -> char
            y = chr(ord('A')+t) + y
            x //= 26
        return y

 

(二)思路二 

参考这个视频: 168-Excel表列名称-Python3_哔哩哔哩_bilibili

class Solution:
    def convertToTitle(self, x: int) -> str:
        res = []
        while x:
            res.append( chr(ord("A")+(x-1)%26) )
            x = (x-1)//26
        return "".join(res[::-1])   # 反转,第一个算出来的字母应放在字符串最后面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JUC并发编程之读写锁原理

1.图解流程 读写锁用的是同一个 Sycn 同步器,因此等待队列、state等也是同一个 t1 w.lock , t2 r.lock t1 成功上锁,流程与 ReentrantLock 加锁相比没有特殊之处,不同的是写锁状态占了 state 的低 16 位,而读锁使用…

多线程并发编程-线程篇

线程基础 什么是线程? 系统中的一个程序就是一个进程,每个进程中的最基本的执行单位,执行路径就是线程,线程是轻量化的进程。 什么是纤程? 绿色线程,由用户自己进行管理的而不是系统进行管理的&#xf…

【教程类】IDEA 打包 jar 包

最近有点累,写点简单的图文教程的东西来缓解一下 一、你需要知道的基础概念 了解了基础概念之后,可以让我们学习的更快更好哦 ~~ 1. jar JAR(Java Archive)是Java中一种常用的归档文件格式,也可以被视为一种压缩文…

学生就业统计表案例

主要分为三块: 渲染业务新增业务删除业务 一、根据持久化数据渲染页面 核心步骤: 读取localstorage 本地数据 如果有数据则转换为对象放到变量里面一会使用它渲染页面如果没有则用默认空数组 []为了测试效果,咱们可以先把initData 存入本地存储看效果…

android存储1--device解锁前的流程

android版本:android-11.0.0_r21http://aospxref.com/android-11.0.0_r21/ 一、主用户primary user的创建 开机后kernel启动第一个用户态进程init,init进程fork出zygote进程。zygote又fork出system server进程。http://aospxref.com/android-11.0.0_r2…

垃圾收集器面试总结(一)

垃圾收集器 Serial 收集器(GC日志标识:DefNew) Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。大家看名字就知道这个收集器是一个单线程收集器了。 它的 “单线程” 的意义不仅仅意味着它只会使用一条垃圾…

[比赛简介]BirdCLEF-2023

比赛链接:BirdCLEF 2023 | Kaggle 比赛简介 鸟类是生物多样性变化的极好指标,因为它们具有高度流动性并且具有不同的栖息地要求。因此,物种组合和鸟类数量的变化可以表明恢复项目的成败。然而,经常在大面积地区进行传统的基于观…

你的车有通风座椅吗?新款奔驰S400升级原厂主副驾座椅通风

大家好,我是奔之升小志(bzs878),专注名车原厂升级,欢迎戳戳右上角“”号关注一下,持续为您带来精彩改装案例。 座椅通风有什么用?能改善身体与座椅接触面空气流通,达到不出汗的效果…

Linux网络服务----SSH

文章目录 一 、SSH服务1.1 什么是SSH服务器?1.2 常用的SSH软件的介绍 二 、ssh的运用2.1 存放ssh服务端的配置文件2.2 ssh在Linux中的密码登录2.3 利用ssh协议传输文件和获取文件2.4 sftp远程访问操作 三 、 ssh密钥登录操作四 、TCP_wapper的原理和运用4.1 TCP_wap…

IP-GUARD能否实现打印指定文件时需经过管理员审批后才能打印?

支持。先设置禁止打印文档的策略,然后设置相关审批流程,再给到客户端相应的申请权限: 1、在控制台-高级-打印控制策略中,给需要进行打印管控的客户端设置以下策略: 动作:禁止 2、在控制台-申请管理-桌面申请管理-审批流程管理中,添加申请类型为打印的审批流程,指定审批人…

通过ADB实现移动端h5项目无线真机调试(超级简单!)

前言 做移动端h5项目的时候,电脑浏览器调试样式和效果,可能和真机展示出来的效果有差距,比如有的手机开启了home键,比如文字大小等样式有偏差。虽然可以通过手机扫描网页二维码在手机上看样式,但是和真机还是有区别。…

每天一道大厂SQL题【Day23】华泰证券真题实战(五)

每天一道大厂SQL题【Day23】华泰证券真题实战(五) 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…

Veritas 与星辰天合的官方一体化方案来了

11>2,XSKY星辰天合联手 Veritas 贡献企业数据管理最佳实践。 近日,XSKY星辰天合以“科技联盟伙伴”身份亮相 2023 Veritas Solution Day,并宣布与 Veritas 推出联合解决方案。双方将携手为大型企业客户带来业界领先的数据存储与保…

CDH中的MySQL升级(RPM包方式)

CDH中的MySQL升级(RPM包方式) 1.下载官网的5.7中最新的版本,地址:MySQL 5.7.41 rpm下载地址 2.解压下载的tar包:tar -xvf mysql-5.7.41-1.el7.x86_64.rpm-bundle.tar 3.备份数据库 3.1 先停止MySQL服务:sy…

【测试开发】第一节.测开入门(附常考面试题)

文章目录 前言 一、什么是测试开发 1.1 常考面试题 二、软件测试的基础概念 2.1 需求 2.2 测试用例 3、BUG 三、生命周期 3.1 软件的生命周期 3.2 软件测试的生命周期 四、软件工程中的几种常见的开发模型 4.1 瀑布模型 4.2 螺旋模型 4.3 增量模型和迭代模型 4.4 敏捷…

【Windows10】〖问题〗Win10默认应用Web浏览器设置里出现两个Microsoft Edge图标,如何删掉空白图标?

〖问题〗Win10默认应用Web浏览器设置里出现两个Microsoft Edge图标,如何删掉空白图标? 问题 出现原因: 空白那个应该是旧版edge,可能是因为你曾经升级最新版Chromium的edge时,旧版本的edge并没有被系统清除干净所…

spring security (史上最全)

认证与授权(Authentication and Authorization) 一般意义来说的应用访问安全性,都是围绕认证(Authentication)和授权(Authorization)这两个核心概念来展开的。 即: 首先需要确定用…

计算机组成原理——第七章输入输出系统(下)

还君明珠双泪目,恨不相逢未嫁时 文章目录 前言7.3.2 中断的作用和原理7.3.3 多重中断7.3.4 程序中断方式7.3.5 DMA 方式 前言 本节除了对时间的计算考察比较多之外,其他的方面也有考察,同时中断的考点在操作系统中也有考察,机组里…

〖Python网络爬虫实战⑯〗- 网页解析利器parsel

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

【hello Linux】进程控制

目录 1. 进程创建 2. 进程终止 3. 进程常见的退出方法 4. 进程等待 5. 进程等待的方法 6. 获取子进程status Linux🌷 1. 进程创建 fork 函数初识 在 linux 中 fork 函数是非常重要的函数,它可以从已存在进程中创建一个新进程。 新进程便是我们所说的子进…