• 算法题 Excel表列序号


    题目:

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

    例如,

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

    示例 1:

    输入: "A"
    输出: 1

    示例 2:

    输入: "AB"
    输出: 28

    示例 3:

    输入: "ZY"
    输出: 701

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/excel-sheet-column-number
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    分析:

    这道题可以理解为进制问题,我们平常在生活中使用的是10进制,也就是满10进1,而在这道题中的进制是26,也就是满26进1。比如一个十进制数22,可以理解为个位数满10进1,也可以反过来想,十位数上的1退回个位数上则等于10。

    这道题中的示例2,输入的是“AB”,A对应1,也就可以理解为A退回B的位置上,则为26,而B对应2,所以最终结果为28。

    以此类推可以总结出运算规律,高一位上的数乘以26再加低一位上的数。A代表1,B代表2,这些是通过题目可以总结出来的,在代码运算的时候,如何让代码也可以使用这种规律呢?是的,我们需要做判断... ...才怪,A的ASCII为65,B的ASCII为66,所以只需要将字符串中的字符取出减去64即可得到它们所表示的数字。

    代码:

    class Solution {
        public int titleToNumber(String s) {
            int res = 0;
            for (int i = 0; i < s.length(); i++) {
                res = (s.charAt(i) - 64) + res * 26;
            }
            return res;
        }
    }
  • 相关阅读:
    Python
    deleted
    deleted
    ZOJ 3593 One Person Game(ExGcd + 最优解)题解
    ZOJ 3609 Modular Inverse(扩展欧几里得)题解
    P2234 [HNOI2002]营业额统计(Splay树)题解
    FJUT seventh的tired树上路径(01字典树)题解
    HDU 4825 Xor Sum(01字典树)题解
    Newcoder Metropolis(多源最短路 + Dijkstra堆优化)题解
    HDU 5938 Four Operations(乱搞)题解
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13328190.html
Copyright © 2020-2023  润新知