• Excel表列名称


    题意:

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

    例如:

    A -> 1
    B -> 2
    C -> 3

    Z -> 26
    AA -> 27
    AB -> 28

    示例 1:

    输入: columnNumber = 1
    输出: “A”

    示例 2:

    输入: columnNumber = 28
    输出: “AB”

    示例 3:

    输入: columnNumber = 701
    输出: “ZY”

    示例 4:

    输入: columnNumber = 2147483647
    输出: “FXSHRXW”

    提示:

    • 1 <= columnNumber <= 2^31 - 1

    题目来源: https://leetcode.cn/problems/excel-sheet-column-title/description/

    解题方法:

    方法一:如果余数为0,增加了26所以在余数为0时,减一个26

    /**
     * @param Integer $columnNumber
     * @return String
     */
    function convertToTitle($columnNumber) {
        $result = "";
        $nums = range("A", "Y");
        array_unshift($nums, "Z");  //array_unshift — 在数组开头插入一个或多个单元
        while ($columnNumber != 0) {
            $remain = $columnNumber % 26;  //取余
            if ($remain == 0) { //如果余数为0,增加了26所以在余数为0时,减一个26
                $columnNumber = $columnNumber - 1;
            }
            $result = $nums[$remain] . $result;
            $columnNumber = floor($columnNumber / 26);
        }
        return $result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    方法二:取模

    /**
     * @param Integer $columnNumber
     * @return String
     */
    function convertToTitle($columnNumber) {
        //第二种
        $result = "";
        while ($columnNumber != 0) {
            $columnNumber--;
            $remain = $columnNumber % 26;
            //ord — 转换字符串第一个字节为 0-255 之间的值
            //chr — 从数字生成单字节字符串
            $result = chr(ord('A') + $remain) . $result;    
            $columnNumber = floor($columnNumber / 26);
        }
        return $result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    Spring 框架学习(五)---- 依赖注入
    Miniconda 使用进阶,把它添加到右键菜单中
    Blender 学习笔记(二)之坐标
    Docker 启动容器报错:cannot allocate memory: unknown
    LCR 027.回文链表
    【Python 零基础入门】变量 & 数据类型
    新手下白对Latex下手啦!
    Go 异常处理
    正则表达式
    MyBatis与Spring的整合
  • 原文地址:https://blog.csdn.net/weixin_43741253/article/details/134293761