[LeetCode] #171 Excel 表列序号

给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。

A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28

[LeetCode] #168 Excel表列名称相反,将字符串转为数字

有两种思路,一表示结果,二表示过程

思路一(结果):

以ABC为例,代表 1*26*26+2*26+3

那我们从低位开始,算出每位的值3、2*26、1*26*26,相加

class Solution {
    public int titleToNumber(String columnTitle) {
        char[] chars = columnTitle.toCharArray();
        int n = chars.length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            res += (chars[n - i - 1] - 'A' + 1) * Math.pow(26, i);
        }
        return res;
    }
}

思路二(过程):

以ABC为例,从高位开始看

看第一位A此时为A,代表1,整体为1

看下一位B,此时为AB,A相比上一次变高了一位,代表26*1,增加B代表2,整体为26*1+2

看下一位C,此时为ABC,AB相比上一次都变高了一位,代表(26*1+2)*26,增加C代表3,整体为26*1+2)*26+3

class Solution {
    public int titleToNumber(String columnTitle) {
        char[] chars = columnTitle.toCharArray();
        int n = chars.length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            res = res * 26 + (chars[i] - 'A' + 1);
        }
        return res;
    }
}

知识点:pow() 方法用于返回第一个参数的第二个参数次方。

总结:

posted @ 2021-08-26 14:58  1243741754  阅读(44)  评论(0编辑  收藏  举报