您的位置:首页 > 编程语言 > Python开发

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

2017-11-23 08:59 871 查看
'''

[编程题] 编码

时间限制: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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息