leetcode171:EXCLE表列序号

思想:

首先将字符转换成其对应的ASCII码,然后将ASCII码+1求余65得到余数(65是大写A的ASCII),最后将余数乘以26的次方(次方数是多少由其所在位置决定)

class Solution:
    def titleToNumber(self, s):
        """
        :type s: str
        :rtype: int
        """
        all = 0
        for i in range(0,len(s)):
            all += (ord(s[i])+1)%65*26**(len(s)-1-i)
        return all

下面是大佬的思想:

首先定义一个字典,存放这单个字符对应的数值。然后通过reversed(s),实现字符串的反转并变成list类型。然后通过letters[c]取出该字符有对应的数值并乘以26的次方。

class Solution(object):
    def titleToNumber(self, s):
        """
        :type s: str
        :rtype: int
        """
        letters = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12, "M": 13, "N": 14, "O": 15, "P": 16, "Q": 17, "R": 18, "S": 19, "T":20, "U": 21, "V": 22, "W": 23, "X": 24, "Y": 25, "Z": 26}
        s = s.upper()
        ret = 0
        b = 0
        for c in reversed(s):
            ret += letters[c] * 26**(b)
            b += 1
        return ret

我的想法和大佬的大致还是差不多的哈,开心

猜你喜欢

转载自blog.csdn.net/weixin_43160613/article/details/83505382