第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
4 EIGHT ZEROTWOONE OHWETENRTEO OHEWTIEGTHENRTEO
0 234 345 0345
T = int(input()) def transfer(s): out = [] n0 = s.count('Z') # 只有ZERO含有'Z' n2 = s.count('W') # 只有TWO含有'W’ n4 = s.count('U') # 只有FOUR含有'U’ n6 = s.count('X') # 只有SIX含有'X' n8 = s.count('G') # 只有EIGHT含有'G' n3 = s.count('H') - n8 # 含'H'的有EIGHT和THREE n5 = s.count('F') - n4 # 含'F'的有FIVE和FOUR n7 = s.count('S') - n6 # 含'S‘的有SIX和SEVEN n1 = s.count('O') - n0 - n2 - n4 # 含'O‘的有one、zero、two、four n9 = s.count('I') - n5 - n6 - n8 # 含'I‘的有nine、five、six、eight out.append('0'*n8+'1'*n9+'2'*n0+'3'*n1+'4'*n2+'5'*n3+'6'*n4+'7'*n5+'8'*n6+'9'*n7) return out for i in range(T): fs = input() t = transfer(fs) print("".join(t))
num = int(input()) for i in range(num): str = input() n0,n2,n4,n6,n8 = str.count('Z'),str.count('W'),str.count('U'),str.count('X'),str.count('G') n1,n3,n5=str.count('O')-n0-n2-n4,str.count('R')-n0-n4,str.count('F')-n4 n7,n9=str.count('V')-n5,str.count('I')-n5-n6-n8 print('0'*n8 + '1'*n9 + '2'*n0 + '3'*n1 + '4'*n2 + '5'*n3 + '6'*n4 + '7'* n5 + '8'*n6 + '9'*n7)
def originalDigits(s): result = [0] * 10 result[0] = s.count("Z") result[2] = s.count("W") result[4] = s.count("U") result[6] = s.count("X") result[8] = s.count("G") result[7] = s.count("S") - result[6] result[5] = s.count("V") - result[7] result[1] = s.count("O") - result[0] - result[4] - result[2] result[9] = (s.count("N") - result[1] - result[7]) // 2 result[3] = s.count("H") - result[8] t, resStr = "", "" for i, r in enumerate(result): t += r * str(i) for i in t: if int(i) >= 8: resStr += str(int(i) - 8) else: resStr += str(int(i) + 10 - 8) return "".join(sorted(resStr)) n=int(input()) list=[0]* n for i in range(n): list[i]=originalDigits(input()) for i in list: print(i)
T=int(input()) for i in range(T): s=input() #ZERO,TWO,FOUR,SIX,EIGHT均有独立的字母标识Z,W,U,X,G,且对应数字为2,4,6,8,0 n2,n4,n6,n8,n0=s.count('Z'),s.count('W'),s.count('U'),s.count('X'),s.count('G') #去除上述单词后,ONE,THREE,FIVE,SEVEN可分别由O,T,F,S标识,且对应数字为3,5,7,9 n3,n5,n7,n9=s.count('O')-n2-n4-n6,s.count('T')-n4-n0,s.count('F')-n6,s.count('S')-n8 n1=s.count('I')-n7-n8-n0#最后剩余单词NINE由I标识,对应数字为1 print('0'*n0+'1'*n1+'2'*n2+'3'*n3+'4'*n4+'5'*n5+'6'*n6+'7'*n7+'8'*n8+'9'*n9)
感觉是一道数学题,暴力大法好!
``` N = int(input()) list_x = [input() for i in range(N)] for line in list_x: ans = '' eight = line.count('G') zero = line.count('Z') two = line.count('W') four = line.count('U') six = line.count('X') seven = line.count('S')-six five = line.count('V')-seven one = line.count('O')-zero-two-four three = line.count('R')-zero-four nine = line.count('I')-eight-five-six ans = '0'*eight+'1'*nine+'2'*zero+'3'*one+'4'*two+'5'*three+'6'*four+'7'*five+'8'*six+'9'*seven print(ans)
```
统计每个数字的出现次数,并存储在相对应的原数字的List中,之后顺序输出
import sys
def NumberChange(s):
result = [0] * 10
result[2] = s.count("Z")
result[4] = s.count("W")
result[6] = s.count("U")
result[8] = s.count("X")
result[0] = s.count("G")
result[9] = s.count("S") - result[8]
result[7] = s.count("V") - result[9]
result[3] = s.count("O") - result[2] - result[6] - result[4]
result[1] = (s.count("N") - result[3] - result[9]) // 2
result[5] = s.count("H") - result[0]
resultnum = ''
for i, r in enumerate(result):
resultnum += r * str(i)
print(resultnum)
for i in sys.stdin.readlines():
if i[0].isalpha():
NumberChange(i.strip())
fromcollections importCounter
n =int(raw_input())
fori inrange(n):
dic ={"ZERO": 0, "ONE": 0, "TWO": 0, "THREE": 0, "FOUR": 0,
"FIVE": 0, "SIX": 0, "SEVEN": 0, "EIGHT": 0, "NINE": 0}
dic1 =[["EIGHT", '0'], ["NINE", '1'], ["ZERO", '2'], ["ONE", '3'], ["TWO", '4'],
["THREE", '5'], ["FOUR", '6'], ["FIVE", '7'], ["SIX", '8'], ["SEVEN", '9']]
S =Counter(raw_input())
if'G'inS andS['G'] !=0:
count =S['G']
dic['EIGHT'] +=count
fors in'EIGHT':
S[s] -=count
if'Z'inS andS['Z'] !=0:
count =S['Z']
dic['ZERO'] +=count
fors in'ZERO':
S[s] -=count
if'H'inS andS['H'] !=0:
count =S['H']
dic['THREE'] +=count
fors in'THREE':
S[s] -=count
if'U'inS andS['U'] !=0:
count =S['U']
dic['FOUR'] +=count
fors in'FOUR':
S[s] -=count
if'W'inS andS['W'] !=0:
count =S['W']
dic['TWO'] +=count
fors in'TWO':
S[s] -=count
if'O'inS andS['O'] !=0:
count =S['O']
dic['ONE'] +=count
fors in'ONE':
S[s] -=count
if'X'inS andS['X'] !=0:
count =S['X']
dic['SIX'] +=count
fors in'SIX':
S[s] -=count
if'S'inS andS['S'] !=0:
count =S['S']
dic['SEVEN'] +=count
fors in'SEVEN':
S[s] -=count
if'F'inS andS['F'] !=0:
count =S['F']
dic['FIVE'] +=count
fors in'FIVE':
S[s] -=count
if'I'inS andS['I'] !=0:
count =S['I']
dic['NINE'] +=count
fors in'NINE':
S[s] -=count
s =''
fori indic1:
s +=dic[i[0]] *i[1]
prints
这道题目是leetcode上的。小米抄袭过来稍加改造了一下,不过还是换汤不换药。
python解法献上:
import sys def originalDigits(s): result = [0] * 10 result[0] = s.count("Z") result[2] = s.count("W") result[4] = s.count("U") result[6] = s.count("X") result[7] = s.count("S") - result[6] result[5] = s.count("V") - result[7] result[1] = s.count("O") - result[0] - result[4] - result[2] result[9] = (s.count("N") - result[1] - result[7]) // 2 result[8] = s.count("I") - result[5] - result[6] - result[9] result[3] = s.count("H") - result[8] t, resStr = "", "" for i, r in enumerate(result): t += r * str(i) for i in t: if int(i) >= 8: resStr += str(int(i) - 8) else: resStr += str(int(i) + 10 - 8) return "".join(sorted(resStr)) for i in sys.stdin.readlines(): if i[0].isalpha(): print(originalDigits(i.strip()))