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/

相关推荐
莫叫石榴姐38 分钟前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
茶猫_2 小时前
力扣面试题 - 25 二进制数转字符串
c语言·算法·leetcode·职场和发展
Hera_Yc.H3 小时前
数据结构之一:复杂度
数据结构
肥猪猪爸4 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
linux_carlos4 小时前
环形缓冲区
数据结构
readmancynn4 小时前
二分基本实现
数据结构·算法
萝卜兽编程4 小时前
优先级队列
c++·算法
Bucai_不才4 小时前
【数据结构】树——链式存储二叉树的基础
数据结构·二叉树
盼海4 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步4 小时前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表