美文网首页每日一练
每日一练(42):Excel表序号

每日一练(42):Excel表序号

作者: 加班猿 | 来源:发表于2022-04-14 09:38 被阅读0次

    title: 每日一练(42):Excel表序号

    categories:[剑指offer]

    tags:[每日一练]

    date: 2022/04/14


    每日一练(42):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

    提示:

    1 <= columnTitle.length <= 7

    columnTitle 仅由大写英文组成

    columnTitle 在范围 ["A", "FXSHRXW"] 内

    来源:力扣(LeetCode)

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

    方法一: 进制转换(从前到后)

    思路分析

    这道题要求将 Excel 表中的列名称转换成相对应的列序号。由于 Excel 表的列名称由大写字母组成,大写字母共有 26 个,因此列名称的

    表示实质是 26 进制,需要将 26 进制转换成十进制。

    26进制转换,根据ASCII码得到值。

    int titleToNumber(string columnTitle) {
        int ans = 0;
        for (char c : columnTitle) {
            int k = c - 'A' + 1;
            ans = ans * 26 + k;
        }
        return ans;
    }
    

    方法二:进制转换(从后到前)

    思路分析

    26进制转换,根据ASCII码得到值。

    int titleToNumber(string columnTitle) {
        int ans = 0;
        long multiple = 1;
        int n = columnTitle.length() - 1;
        for (int i = n; i >= 0; --i) {
            int k = columnTitle[i] - 'A' + 1;
            ans += k * multiple;
            multiple *= 26;
        }
        return ans;
    }
    

    相关文章

      网友评论

        本文标题:每日一练(42):Excel表序号

        本文链接:https://www.haomeiwen.com/subject/yuqtertx.html