加载中...
171-Excel 表列序号(Excel Sheet Column Number)
发表于:2021-12-03 | 分类: 简单
字数统计: 519 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/excel-sheet-column-number

英文原文

Given a string columnTitle that represents the column title as appear in an Excel sheet, return its corresponding column number.

For example:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

 

Example 1:

Input: columnTitle = "A"
Output: 1

Example 2:

Input: columnTitle = "AB"
Output: 28

Example 3:

Input: columnTitle = "ZY"
Output: 701

Example 4:

Input: columnTitle = "FXSHRXW"
Output: 2147483647

 

Constraints:

  • 1 <= columnTitle.length <= 7
  • columnTitle consists only of uppercase English letters.
  • columnTitle is in the range ["A", "FXSHRXW"].

中文题目

给你一个字符串 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

示例 4:

输入: columnTitle = "FXSHRXW"
输出: 2147483647

 

提示:

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

通过代码

高赞题解

解题思路

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

代码

[]
class Solution { public int titleToNumber(String s) { int ans = 0; for(int i=0;i<s.length();i++) { int num = s.charAt(i) - 'A' + 1; ans = ans * 26 + num; } return ans; } }

画解

<frame_00001.png,frame_00002.png,frame_00003.png,frame_00004.png>

想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:《画解剑指 Offer 》,O(∩_∩)O

统计信息

通过次数 提交次数 AC比率
112377 156638 71.7%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
Excel表列名称 简单
上一篇:
172-阶乘后的零(Factorial Trailing Zeroes)
下一篇:
173-二叉搜索树迭代器(Binary Search Tree Iterator)
本文目录
本文目录