Excel Sheet Column Number

Related to question Excel Sheet Column Title

Given a column title as appear in an Excel sheet, return its corresponding column number.

For example:

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

然后结构给出来了一个函数和一个参数

int titleToNumber(char *s) {

}

看这个题目,左看右看,神神怪怪,还跟excel弄上关系了,还特地打开excel看了看,等于没说,也就是excel列的标号为A,B,C,……,Z,AA,AB它们代表的行数为右边的值,没啥信息量,等于没说,还是得找到key和value的关系

规定的函数传进去的参数是一个字符串,如果是单个字符,对应关系就是:

A: ‘A’- 64

B: ‘B’- 64

……

单个字符转换成ASCII减去差值64即可,但是假如是一个字符串,去掉末尾‘0’,对应关系:

AA: (‘A’- 64) * 26 + (‘A’- 64)

AB: (‘A’- 64) * 26 + (‘B’- 64)

……

因此很容易顺序逐个遍历字符串的字符,前一位*26+后一位字符的值即可,就像26进制的感觉

提交

int titleToNumber(char *s) {
    int i = 0;
    int sum = 0;
    while (s[i] != '\0'){
        sum = sum * 26 + s[i] - 64;
        ++i;
    }
    return sum;
}

搞定

Submission Details
1000 / 1000 test cases passed.
Status: Accepted
Runtime: 5 ms

发表评论