编程谜语:如何将Excel列名转换为数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

最近,在一次面试中,我被要求解决一个编程难题,我认为这将是一个有趣的分享。这是关于将Excel列字母转换为实际数字,如果还记得,Excel用字母从A到Z命名它的列,然后顺序是AA,AB,AC。AZ、BA、BB等

必须编写一个函数,该函数接受字符串作为参数(如“AABCCE”),并返回实际的列号。

解决方案可以是任何语言。

提问于
用户回答回答于

我很久以前就为Python脚本编写了这个脚本:

def index_to_int(index):
    s = 0
    pow = 1
    for letter in index[::-1]:
        d = int(letter,36) - 9
        s += pow * d
        pow *= 26
    # excel starts column numeration from 1
    return s
用户回答回答于

在我看来,这是一个标准的缩减:

Python:

def excel2num(x): 
    return reduce(lambda s,a:s*26+ord(a)-ord('A')+1, x, 0)

C#:

int ExcelToNumber(string x) {
    return x.Aggregate(0, (s, c) => s * 26 + c - 'A' + 1 );
}

所属标签

可能回答问题的人

  • 红双喜经典VS中华

    1 粉丝0 提问8 回答
  • 杰西

    5 粉丝1 提问4 回答
  • 浮生长恨欢娱少

    个人站长 · 站长 (已认证)

    51 粉丝2 提问4 回答
  • 滑稽园扛把子

    Swoole Inc · PHP工程师 (已认证)

    135 粉丝0 提问4 回答

扫码关注云+社区