騰訊秋招面試題【2017】
阿新 • • 發佈:2018-12-10
假定一種編碼的編碼範圍是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))