leetcode171:EXCLE表列序号

xiaoxiao2025-04-26  15

思想:

首先将字符转换成其对应的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

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

转载请注明原文地址: https://www.6miu.com/read-5029151.html

最新回复(0)