目录
题目描述
输入/输出描述
输入/输出示例:
题目分析:
代码展示
传送门
题目描述
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"),然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
输入/输出描述
?输入描述
第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身
(长度在3到10000之间)。?输出描述
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
输入/输出示例:
输入:
4
EIGHT
ZEROTWOONE
OHWETENRTEO
OHEWTIEGTHENRTEO
输出:
0
234
345
0345
题目分析:
首先将题目对应的数字、对应的数字码、数字码对应的英文列出一个表:
原码 | +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)