算法39: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

示例4:

输入: columnTitle = "ABC"

输出: 731

提示:

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

二、思路分析图

(一)循环方案【O(n)方案】

三、代码

(一)数据初始化

java 复制代码
/**
 * 入口
 * 171、Excel 表列序号
 * 输入:
 * columnTitle = "ABC"
 * 输出:
 * result1 = 731
 * 解释:
 * 1.递归方案
 * 2.O(n)方案
 */
@Test
public void suanfa39()
{
    // 初始化
    String columnTitle = "ABC";

    // 打印
    // 循环方案【O(n)方案】
    int result1 = this.forTitleToNumber(columnTitle);
    System.out.println("result1 = " + result1);
}

(二) 循环方案【O(n)方案】

java 复制代码
/**
 * 循环方案【O(n)方案】
 *
 * @param columnTitle
 * @return
 */
public int forTitleToNumber(String columnTitle)
{
    int sum = 0;

    for (int i = 0; i < columnTitle.length(); i++)
    {
        sum += Math.pow(26, i) * (columnTitle.charAt(columnTitle.length() - 1 - i) - 64);
    }

    return sum;
}

(三)结果图

作者:王子威

四、总结

  • 学习了Excel 表列序号算法
  • 这个应该是168的另一种版本,思路相反,因为有了经验,这个就参考了168的思路逆向写的
  • 算法兴趣+1 总:39
  • 加强了对算法的分析能力
相关推荐
Wang's Blog2 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain3 小时前
C++转Java日记(03)
java·开发语言·c++
皮皮林5513 小时前
Java实现微信扫码登录
java
布莱克6053 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
Yyyyyy~5 小时前
【Java】Day4Web基础知识
java·spring boot
D e re k ZH6 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
灿飞屋6 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
石小石Orz7 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
NE_STOP7 小时前
Spring AI Alibaba - MCP入门
java