力扣刷题(第三十五天)

灵感来源 

- 保持更新,努力学习

- python脚本学习

Excel 表列名称

解题思路

Excel 表列名称的规则类似于将数字转换为 26 进制,但与常规进制转换不同的是,这里的 "A" 对应 1 而不是 0。因此,当余数为 0 时,需要特殊处理为 'Z',并将商减 1。具体步骤如下:

  1. 取模运算:计算当前数字对 26 的余数,确定当前位的字符。
  2. 字符转换:若余数为 0,对应字符 'Z',否则对应 chr(64 + remainder)
  3. 更新数字:将原数字除以 26 并向下取整,若余数为 0 则商减 1。
  4. 反转拼接:重复上述步骤直到数字为 0,最后反转拼接结果字符串。
    def convertToTitle(columnNumber: int) -> str:
        result = []
        while columnNumber > 0:
            remainder = columnNumber % 26
            if remainder == 0:
                result.append('Z')
                columnNumber = columnNumber // 26 - 1
            else:
                result.append(chr(64 + remainder))
                columnNumber = columnNumber // 26
        return ''.join(reversed(result))

逐行解释

def convertToTitle(columnNumber: int) -> str:
    # 用于存储结果的列表,最终需要反转以得到正确顺序
    result = []
    # 循环处理直到数字变为 0
    while columnNumber > 0:
        # 计算当前数字对 26 取余的结果
        remainder = columnNumber % 26
        # 当余数为 0 时,对应字符 'Z'
        if remainder == 0:
            result.append('Z')
            # 由于 'Z' 对应 26,但在 26 进制中需要表示为 0,因此商减 1
            columnNumber = columnNumber // 26 - 1
        else:
            # 余数不为 0 时,直接转换为对应的 ASCII 字符(65 对应 'A')
            result.append(chr(64 + remainder))
            # 正常更新商为整除结果
            columnNumber = columnNumber // 26
    # 由于结果是逆序收集的,需要反转后拼接成字符串
    return ''.join(reversed(result))

你可能感兴趣的:(leetcode,算法,职场和发展)