目录

题目描述        

输入/输出描述

输入/输出示例:  

题目分析:

代码展示

传送门


 

题目描述        

    继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)