• LeetCode | 168.Excel表列名称


    在这里插入图片描述
    这道题一开始以为是简单的进制转换问题,用的以往的思路,对于一般性的进制转换题目,只需要不断地对 columnNumber 进行 % 运算取得最后一位,然后对 columnNumber 进行 / 运算,将已经取得的位数去掉,直到 columnNumber 为 0 即可。
    但是这里可不是这样,比如 26 是 Z,52 是 AZ,因为这里是从 1 开始表示的,没有从 0 开始。所以我就进行了一个判断,因为出现 0 的情况只会在 columnNumber 能整除 26 的时候出现,其他情况下还是可以使用以往的思路的,

    class Solution(object):
        def convertToTitle(self, columnNumber):
            """
            :type columnNumber: int
            :rtype: str
            """
            ans = ''
            # 使用字典推导式创建映射字典
            mapping = {i - 64: chr(i) for i in range(65, 91)}
            while columnNumber > 0:
                if columnNumber % 26 == 0:
                    ans = mapping[26] + ans
                    columnNumber -= 26
                else:
                    ans = mapping[columnNumber % 26] + ans
                columnNumber = columnNumber // 26
            return ans
    

    在这里插入图片描述
    题解用的是数学的方法,很巧妙,总体的意思就是和正常 0~25 的 26 进制相比,本质上就是每一位多加了 1。假设 A == 0,B == 1,那么 AB = 26 * 0 + 1 * 1,而现在 AB = 26 * (0 + 1) + 1 * (1 + 1),所以只要在处理每一位的时候减 1,就可以按照正常的 26 进制来处理。

    在这里插入图片描述

    class Solution(object):
        def convertToTitle(self, columnNumber):
            """
            :type columnNumber: int
            :rtype: str
            """
            ans = ''
            # 使用字典推导式创建映射字典
            mapping = {i - 64: chr(i) for i in range(65, 91)}
            while columnNumber > 0:
                a = (columnNumber - 1) % 26 + 1
                ans = mapping[a] + ans
                columnNumber = (columnNumber - a) // 26
            return ans
    
  • 相关阅读:
    生存分析原理简明教程 单因素生存分析 Kaplan-Meier、LogRank 只能针对单一的变量进行 多因素cox回归分析
    高通量筛选检测方法-分子篇
    iTOP2K1000开发板Makefile文件
    HCIP第十七天笔记
    批量自动付款(京东)
    Nginx服务配置文档
    Linux基础命令大全
    Wireshark数据抓包分析之HTTP协议
    归并排序知识总结
    “蔚来杯“2022牛客暑期多校训练营10 EF题解
  • 原文地址:https://blog.csdn.net/weixin_44043952/article/details/139692973