Excel表列序号

题意:

给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号

例如:

A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28

...

示例 1:

输入 : columnTitle = "A"
输出: 1

示例 2:

输入 : columnTitle = "AB"
输出: 28

示例 3:

输入 : columnTitle = "ZY"
输出: 701

提示:

  • 1 <= columnTitle.length <= 7
  • columnTitle 仅由大写英文组成
  • columnTitle 在范围 ["A", "FXSHRXW"]

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

解题方法:

解题思路

  • 标签:字符串遍历,进制转换
  • 初始化结果 ans = 0,遍历时将每个字母与 A 做减法,因为 A 表示 1,所以减法后需要每个数加1,计算其代表的数值 num = 字母 - 'A' + 1
  • 因为有 26 个字母,所以相当于 26 进制,每 26 个数则向前进一位
  • 所以每遍历一位则ans = ans * 26 + num
  • ZY 为例,Z 的值为 26Y 的值为 25,则结果为 26 * 26 + 25=701
  • 时间复杂度:O(n)



代码:

php 复制代码
function titleToNumber($columnTitle) {
    $ans = 0;
    for($i=0; $i < strlen($columnTitle); $i++) {
        $num = ord($columnTitle[$i]) - ord('A') + 1;
        $ans = $ans * 26 + $num;
    }
    return $ans;
}
php 复制代码
function titleToNumber($columnTitle) {
    $num = 0;
    $strlen = strlen($columnTitle);
    for($i = 0; $i < $strlen; $i++){
        $column_no = ord($columnTitle[$i]) - 64;
        $num += 26 ** ($strlen - $i - 1) * $column_no;
    }
    return $num;
}

参考:

作者:画手大鹏

链接:https://leetcode.cn/problems/excel-sheet-column-number/solutions/6849/hua-jie-suan-fa-171-excelbiao-lie-xu-hao-by-guanpe/

相关推荐
我是章汕呐17 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn17 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法
老鱼说AI17 小时前
从点积到希尔伯特空间:向量内积的几何本质与大模型相似度度量
人工智能·深度学习·线性代数·算法·机器学习·数学建模
aixingpan18 小时前
aixingpan.cn API开发文档:api_docs_trichart_natal_progression_sec_transit2接口指南
前端·php
地平线开发者18 小时前
模型部署|如何解决算子约束
深度学习·算法·自动驾驶
Navigator_Z18 小时前
LeetCode //C - 1254. Number of Closed Islands
c语言·算法·leetcode
deepseek2319 小时前
GPT-6 Astra 破解 FrontierMath 九年悬案拆解:调和熵投票规则反证核恒非空,局部搜索如何终结反例悬赏
人工智能·算法·ai agent
syagain_zsx19 小时前
算法基础篇 · 04 前缀和(C++ 题解)
c++·算法·前缀和
Logic10119 小时前
C语言/数据结构滑动窗口题解:替换k个字符后的最长连续相同字符子串(LeetCode 424)
c语言·数据结构·字符串·滑动窗口·时间复杂度·频率统计·算法题
程序员阿鹏20 小时前
简单介绍一下软引用
java·开发语言·jvm·数据结构·后端