1. 程式人生 > >騰訊秋招面試題【2017】

騰訊秋招面試題【2017】

假定一種編碼的編碼範圍是a ~ y的25個字母,從1位到4位的編碼,如果我們把該編碼按字典序排序,形成一個數組如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy 其中a的Index為0,aa的Index為1,aaa的Index為2,以此類推。 編寫一個函式,輸入是任意一個編碼,輸出這個編碼對應的Index. 輸入描述:

輸入一個待編碼的字串,字串長度小於等於100.

輸出描述:

輸出這個編碼的index

輸入例子1:

baca

輸出例子1:

16331
def run(s):
    length = len(s)
    w0 = 25*25*25 + 25*25 + 25 + 1
    w1 = 25*25 + 25 + 1
    w2 = 25 + 1
    my_dict = {'a':0, 'b':1, 'c':2, 'd':3, 'e':4, 'f':5, 'g':6, 'h':7, 'i':8, 'j':9, 'k':10, 'l':11,
              'm':12, 'n':13, 'o':14, 'p':15, 'q':16, 'r':17, 's'
:18, 't':19, 'u':20, 'v':21, 'w':22, 'x':23, 'y':24} if length==4: return my_dict[s[0]]*w0 + my_dict[s[1]]*w1 + my_dict[s[2]]*w2 + my_dict[s[3]] + 3 elif length == 3: return my_dict[s[0]]*w0 + my_dict[s[1]]*w1 + my_dict[s[2]]*w2 + 2 elif length == 2: return
my_dict[s[0]]*w0 + my_dict[s[1]]*w1 + 1 elif length == 1: return my_dict[s[0]]*w0 else: print('error') return 0 if __name__ == '__main__': in_str = input('') print(run(in_str))