腾讯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,依次类推。
具体细节不多赘述,可以根据这个思路自己去实现,也可以参考我的代码。
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
[编程题] 编码
时间限制: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)