欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

腾讯2017秋招笔试编程题:编码 [python]

程序员文章站 2024-03-07 13:39:21
...
'''
[编程题] 编码
时间限制:1秒
空间限制:32768K
假定一种编码的编码范围是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
'''



'''
解题思路:考虑细节
  字符串a的编码是0,那么字符串b的编码是0 + 25^0 + 25^1 + 25^2 + 25^3
  字符串aa的编码是1,那么字符串ab的编码是 1 + 25^0 + 25^1 + 25^2
  字符串aaa的编码是2,那么字符串aab的编码是 2 + 25^0 + 25^1
  字符串aaaa的编码是3,那么字符串aab的编码是 3 + 25^0
  根据字符串中字母所在位置不同,索引值每次递增的值也不同,第一位字母变化一次,索引值递增25^0 + 25^1 + 25^2 + 25^3,依次类推。
  具体细节不多赘述,可以根据这个思路自己去实现,也可以参考我的代码。
'''


'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例

'''


bit_1 = 25**0 + 25**1 + 25**2 + 25**3
bit_2 = 25**0 + 25**1 + 25**2
bit_3 = 25**0 + 25**1
bit_4 = 25**0
bit = [bit_1, bit_2, bit_3, bit_4]

string = input()
length = len(string)
index = -1
for i in range(length):
    temp = ord(string[i]) - 97
    index += 1
    index += temp * bit[i]

print(index)