171. Excel Sheet Column Number

进制转换:A(N进制) ==> B(M进制)

  • 从大位数到小位数: 每访问一个位数,累计结果都需要 *N,再加上该位数n本身在M进制的值 例如 ABC:0*26+1=1 ----> 1*26+2=28 ----> 28*26+3=731

class Solution:
    def titleToNumber(self, s: str) -> int:
        result = 0
        for i in range(len(s)):
            result *= 26
            result += (ord(s[i])-ord('A')+1)
        return result
  • 从小位数到大位数: 每一位数n都代表 (n在M进制的值) * (M的n-1次方),把每位数代表的值相加 例如 ABC:1*(26^2) + 2*(26^1) + 3*(26^0) = 731

class Solution:
    def titleToNumber(self, s: str) -> int:
        result = 0
        for i in range(len(s)):
            result += (ord(s[i])-ord('A')+1) * (26**(len(s)-1-i))
        return result

Last updated

Was this helpful?