leetCode——171. Excel表列序号

本文介绍了一种算法,用于将Excel表格中的列名称转换为其对应的列序号。通过遍历字符串,将每个字符转化为整数值,并使用特定的数学公式进行计算,实现了从A到ZZZ等列名的有效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

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

示例 1:

输入: "A"
输出: 1

示例 2:

输入: "AB"
输出: 28

示例 3:

输入: "ZY"
输出: 701

致谢:
特别感谢 @ts 添加此问题并创建所有测试用例。

解题思路 

1)将字符串遍历

2)将遍历到的每个字符通过公式处理获得正确的值。

3) 公式: 数值 = (元素 - 'A' + 1) * 26的位数 次方。 个位0次方、十位1次方、百位2次方...... 

代码实现

class Solution {
    public int titleToNumber(String s) {
        // 1、遍历字符串每个字符将每个字符转化为整数值
        // 1)处理字符串去除 " 和 \
        int re = 0; // 返回的值
        s = s.replaceAll("\"", "").replaceAll("\\\\", "");
        int len = s.length();
        System.out.println("s==>" + s);
        // 2)遍历字符串
        for (int i = 0; i < len ; i++) {
            char c = s.charAt(len - 1- i); // i = len - 1 - 1 =》 字符在个位, i = len - 1 - 2 =》字符在十位 ...
            
            // 3)将每个字符转化为整数值
            int curreVal = c - 'A' + 1; // 值
            int xi = (int)Math.pow(26, i); // 系数
            re = re + curreVal * xi ;    
        }
        
        return re;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值