本文共 1566 字,大约阅读时间需要 5 分钟。
目录
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"),然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
?输入描述 第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身 (长度在3到10000之间)。 ?输出描述 输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
输入:
4EIGHTZEROTWOONEOHWETENRTEOOHEWTIEGTHENRTEO
输出:
02343450345
首先将题目对应的数字、对应的数字码、数字码对应的英文列出一个表:
原码 | +8后的原码 | 取个位 | 英文码 |
0 | 8 | 8 | EIGHT |
1 | 9 | 9 | NINE |
2 | 10 | 0 | ZERO |
3 | 11 | 1 | ONE |
4 | 12 | 2 | TWO |
5 | 13 | 3 | THREE |
6 | 14 | 4 | FOUR |
7 | 15 | 5 | FIVE |
8 | 16 | 6 | SIX |
9 | 17 | 7 | SEVEN |
观察英文码,发现数字0对应的英文码EIGHT中字符‘G’在所有英文码中是独有的。也就是说,在打乱的英文码中,出现字符G的次数等于出现数字0的次数。同理,数字2的英文码ZERO的字符‘Z’、数字4的英文码TWO的字符‘W’、数字6的英文码FOUR字符‘U’、数字8的英文码SIX的字符‘X’,这5个数字的英文码都有独特的字符,可以唯一的表示他们数字的个数。
在剩下的5个数字中,观察规律,不难看出数字3的英文码ONE中的字符‘O’,除了已知数量的2、4、6外也是唯一的,也就是说将字符O的总数减去2、4、6数字的数量,剩下的就是数字3的数量。以此类推得出其余所有数字的数量,这里不再一一赘述。
在代码中,使用count()函数来获取每个字符的数量。count()函数的意思是在字符串中取子串的数量,返回整数类型。语法为string.count(substring)
time = int(input())s = []for i in range(time): a = input() s.append(a)for element in s: n0 = element.count('G') n2 = element.count('Z') n4 = element.count('W') n6 = element.count('U') n8 = element.count('X') n3 = element.count('O') - n2 - n4 - n6 n5 = element.count('T') - n0 - n4 n7 = element.count('F') - n6 n9 = element.count('S') - n8 n1 = element.count('I') - n0 - n7 - n8 print('0' * n0 + '1' * n1 + '2' * n2 + '3' * n3 + '4' * n4 + '5' * n5 + '6' * n6 + '7' * n7 + '8' * n8 + '9' * n9)
1. input函数
2. int函数
3. range函数
4. append函数
5. count函数
6. print()函数
转载地址:http://tjsoi.baihongyu.com/