Excel表列序号

题目:

 

 

思路:

【1】这道题乍看一下会觉得有点懵逼,但转化一下,便可以看成是多进制转10进制的样子:

//在二进制中,101这种可以看作为 2**2*1+2**1*0+2**0*1 那么对应转化为
A = 26**0*1 = 1*1 = 1
AB = 26**1*1 + 26**0*2 = 26*1 + 1*2 = 28
ZY = 26**1*26 + 26**0*25 = 26*26 + 1*25 = 676 + 25=701

【2】思路有了,便是转为数学公式,那么就要考虑限制了最大值FXSHRXW的计算是否超过了Integer.MAX_VALUE

代码展示:

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

 

posted @ 2023-01-05 15:17  忧愁的chafry  阅读(231)  评论(0编辑  收藏  举报