171. Excel Sheet Column Number
On This Page
The column titles in an Excel sheet are designed similar to a base-26 number system. The columns start from ‘A’ (which is 1) to ‘Z’ (which is 26), then after ‘Z’, the column titles go to ‘AA’ (which is 27), ‘AB’ (28), and so on.
This problem is essentially asking us to convert a base-26 number (represented by uppercase English letters) to a decimal number.
That means that for each “new” index in
columnTitle we already pass alphabet.
columnTitlelength is 1 => result in range of (1-26)
columnTitlelength is 2 (‘AB’) => first index passed alphabet (26), next B equals 2 in alphabet. Hence 1 * 26 + index(B)
import string class Solution: def titleToNumber(self, columnTitle: str) -> int: alphabet = list(string.ascii_uppercase) s = 0 for letter in columnTitle: letter_idx = alphabet.index(letter) + 1 s = s*26 + letter_idx return s
ord function that returns index of letter.
>>> ord('A') 65
Because here index is 65, will create a number to convert it to the correct one:
result_number - ord('A) + 1
idxA = ord('A') - ord('A') + 1 idxB = ord('B') - ord('A') + 1
class Solution: def titleToNumber(self, columnTitle: str) -> int: s = 0 correct_sum = - ord('A') + 1 for letter in columnTitle: s = s * 26 + ord(letter) + correct_sum return s