算法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
  • 加强了对算法的分析能力
相关推荐
程序员老舅4 小时前
啃透 I2C 驱动开发,才算入门嵌入式 Linux 内核驱动
数据结构·驱动开发·b树·内核·嵌入式·嵌入式开发·i2c
lueluelue475 小时前
LeetCode:链表
算法·leetcode·链表
橘子汽水1688 小时前
Leetcode 23,543合并K个升序链表,二叉树的直径
算法·leetcode·链表
huameinan狮子8 小时前
Adaboost算法原理与计算实例
算法
别怪我很水8 小时前
API中提供了VelocityTracker类用于计算触摸事件MotionEvent的速度,而其内部默认使用的方法就是最小二乘法,本 ...
算法·gitee·最小二乘法
都叫我大帅哥8 小时前
Java JJWT 完全指南:从入门到生产级实践
java
前端开发张小七10 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
ThsPool10 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
赤壁小虾11 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库