算法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
  • 加强了对算法的分析能力
相关推荐
瑞士卷@35 分钟前
MyBatis入门到精通(Mybatis学习笔记)
java·数据库·后端·mybatis
梵得儿SHI1 小时前
Java 反射机制深度剖析:性能与安全性的那些坑
java·开发语言·安全·反射·动态代理·性能·反射机制
虫小宝1 小时前
Java分布式架构下的电商返利APP技术选型与架构设计实践
java·分布式·架构
007php0071 小时前
百度面试题解析:Zookeeper、ArrayList、生产者消费者模型及多线程(二)
java·分布式·zookeeper·云原生·职场和发展·eureka·java-zookeeper
4Forsee1 小时前
【Android】浅析 Android 的 IPC 跨进程通信机制
android·java
来旺2 小时前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
Json____2 小时前
使用node Express 框架框架开发一个前后端分离的二手交易平台项目。
java·前端·express
since �2 小时前
前端转Java,从0到1学习教程
java·前端·学习
詩句☾⋆᭄南笙2 小时前
Mybatis一对一、一对多
java·mybatis·resulttype·resultmap·一对多·一对一
Andya_net2 小时前
Java | 基于redis实现分布式批量设置各个数据中心的服务器配置方案设计和代码实践
java·服务器·分布式