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/

相关推荐
小许学java17 小时前
数据结构-ArrayList与顺序表
java·数据结构·顺序表·arraylist·线性表
格林威19 小时前
常规线扫描镜头有哪些类型?能做什么?
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·工业镜头
李白你好20 小时前
一款基于 PHP 的轻量级Webshell管理工具
php
程序员莫小特21 小时前
老题新解|大整数加法
数据结构·c++·算法
小刘max1 天前
深入理解队列(Queue):从原理到实践的完整指南
数据结构
过往入尘土1 天前
服务端与客户端的简单链接
人工智能·python·算法·pycharm·大模型
zycoder.1 天前
力扣面试经典150题day1第一题(lc88),第二题(lc27)
算法·leetcode·面试
蒙奇D索大1 天前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
洲覆1 天前
C++ 模板、泛型与 auto 关键字
开发语言·数据结构·c++
MoRanzhi12031 天前
15. Pandas 综合实战案例(零售数据分析)
数据结构·python·数据挖掘·数据分析·pandas·matplotlib·零售